Scala常用表达式

主目录

常用表达式

if表达式
  • 可以返回值的,类型会自动推断
  • val isAdult = if (age > 18) 1 else 0
循环
  • while(true) {}
  • for(i <- 1 to n) {} //[1,n]
  • for(i <- 1 until n) {} //[1,n)
  • for(i <- (1 until n).reverse) //反向遍历
  • for(c <- "Hello World") print(c)
  • for(i <- 1 to 9; j <- 1 to 9) {}
  • for(i <- 1 to 100 if i % 2 == 0) println(i) //if守卫
  • for(i <- 1 to 3) yield i //推导式:构造集合Vector(1, 2, 3)

异常,与java类似

try {
    throw new IllegalArgumentException("")
} catch {
    case exception: IllegalArgumentException => println(exception)
} finally {
}

Actor

  • Scala的Actor类似于Java中的多线程编程,尽可能地避免锁和共享状态
  • Spark使用的线程框架是Akka,其实现了类似Scala Actor的模型
 import scala.actors.Actor
 //trait Actor类似于Java中的Thread和Runnable一样,是基础的多线程基类和接口
 class HelloActor extends Actor {
   def act() { //act类似run
     while (true) {
       receive {//等待接受消息,会阻塞
         case name: String => println("Hello, " + name) 
         //如果需要回复消息:sender ! "received"
}
     }
   }
 }
 val helloActor = new HelloActor
 helloActor.start()
 helloActor ! "leo" //给actor发送消息
  • 默认情况下,消息都是异步的,同步发送消息是val reply = actor !? message
  • 如果要异步发送一个消息,但是在后续要获得消息的返回值, 那么可以使用Future。即!!语法。
val future = actor !! message
//在需要的情况下接受相应,如果还没有则阻塞
val reply = future()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值