大数据程序员大数据

Scala基础语法(二)

2016-12-31  本文已影响198人  心_的方向

List集合

集合元素映射

Scala面向对象特性

  1. 主构造方法的参数直接跟在类名后面
  2. 主构造方法的函数体就是类中除了其余方法的所有代码,会在new一个对象的时候执行
  3. 如果参数不声明val或者var,则相当于private[this],只能在内部使用


  1. var name = “” 在编译的时候会把这个字段变为私有的,但是会对外提供get和set方法,这样就可以不用自己定义get和set方法
  2. private var name = “” 生成的get和set方法不会对外
  3. val 定义的只有get方法
  4. private[this] 定义的只能在对象中使用。
  5. def name = {} 可以自定义get;def name_=(){} 可以自定义set方法(注意_两边不能有空格)

高阶函数

  1. 函数作为参数传递


  2. 函数作为返回值


scala中的模式匹配

scala中没有提供switch case语法,相应的是: 变量 match{case 值 => 代码}语法。它的特点在于:可以匹配任何情况,包括匹配值、类型、集合的元素等。



匹配集合的元素,匹配List集合时,需要使用::操作符


scala隐式转换

可以自定义隐式函数,即implictit function。定义的隐式转换函数,会被scala在需要转换的情况自动使用。因为编译器需要对隐式函数进行导入,因此通常使用"one2one"的命名方式。

Older类型转化为SpecialPerson类型


scala中的trait类

  1. 类可以使用extends关键字,但是在scala中没有implement,但trait类可以作为接口来使用。统一使用extends
  2. 继承trait类后,必须实现其中的抽象方法。
  3. 使用extends ··· with ···实现多重继承trait类
  4. trait类可以定义抽象方法、具体方法(会被继承)、抽象字段、具体字段(会被继承)。
  5. 多个trait类有相同的方法,则从继承的顺序最左边,然后往右依次执行


scala中的多线程

两个线程之间通信示例

import scala.actors.Actor

/**
 * Created by wulei on 2016/12/27 0027.
 */
object Student {
  // 让这个类支持模式匹配
  case class Message(content: String, sender: Actor)

  // 多线程必须继承Actor类
  class LeoActor extends Actor {
    // 类型java中的run方法,需要重写
    def act() {
      while (true) {
        // 接受消息
        receive {
          case Message(content, sender) => {
            // 打印接受的消息
            println("leo: " + content)
            // 向这个线程发送消息(这里是字符串)
            sender ! "please call me after 10 minutes."
          }
        }
      }
    }
  }

  class JackActor(val LeoActor: Actor) extends Actor {
    def act() {
      // 向一个线程发送消息(这里是一个对象)
      LeoActor ! Message("Hello , leo, I'm Jack. Are you free Now?", this)
      while (true) {
        // 接收消息
        receive {
          case resphone: String => println("Jack: " + resphone)
        }
      }
    }
  }

  def main(args: Array[String]): Unit = {
    val leo = new LeoActor()
    val jack = new JackActor(leo)
    leo.start() //启动线程
    jack.start()
  }
}
运行结果
上一篇 下一篇

猜你喜欢

热点阅读