Scala基础语法(二)

List集合

  • list是一个有序且可以重复的序列。
  • 创建list集合 List(elem1, elem2...)这些元素可以不是同一类型
  • list组成结构
    list.head 返回list集合中的第一个元素
    list.tail 返回除了list.head以外的所有元素(也是个list集合);如果原list只有一个元素,则返回Nil(这是一个类,专门用来表示空的list集合)。


  • list添加元素(:: 操作符只适用于list集合)


  • 创建可变的list集合(可以使用+=、++=、-=、--=运算符),并添加元素。注意:可变与不可变可以相互转换


  • Set集合和List一样,分可变和不可变Set集合。但是set集合中的元素是无序且没有重复的。

集合元素映射

  • yield关键字会把当前结果记下来,保存在一个新的集合中,循环结束后,返回新的集合(原来是什么类型的集合就返回什么类型)


  • filter和map函数
    _符号用来表示每个元素
    filter函数对不满足表达式的进行过滤
    map函数对每个元素进行操作后返回新的值


Scala面向对象特性

  • 半生类和半生对象
    1. 可以互相访问私有属性
    2. 同名且在同一scala文件中


  • 半生对象中的apply方法可以实现,构造对象的时候不使用new关键字


  • 主构造方法
  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()
  }
}
运行结果
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,639评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,277评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,221评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,474评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,570评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,816评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,957评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,718评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,176评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,511评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,646评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,322评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,934评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,755评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,987评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,358评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,514评论 2 348

推荐阅读更多精彩内容