摘要:
一个从类型 S 到类型 T 的隐式转换由一个函数类型 S => T 的隐式值来定义,或者由一个可转换成所需值的隐式方法来定义。 隐式转换在两种情况下会用到: 如果一个表达式 e 的类型为 S, 并且类型 S 不符合表达式的期望类型 T。 在一个类型为 S 的实例对象 e 中调用 e.m, 如果被调用 阅读全文
摘要:
匿名函数 Scala 中定义匿名函数的语法很简单,箭头左边是参数列表,右边是函数体。 使用匿名函数后,我们的代码变得更简洁了。 下面的表达式就定义了一个接受一个Int类型输入参数的匿名函数: var inc = (x:Int) => x+1 上述定义的匿名函数,其实是下面这种写法的简写: def a 阅读全文
摘要:
在 Scala 里 Option[T] 实际上是一个容器,就像数组或是 List 一样,你可以把他看成是一个可能有零到一个元素的 List。 当你的 Option 里面有东西的时候,这个 List 的长度是 1(也就是 Some),而当你的 Option 里没有东西的时候,它的长度是 0(也就是 N 阅读全文
摘要:
数组(Array) import scala.collection.mutable.ArrayBuffer // 定长数组 val a = new Array[String](5) val b = new Array[Int](5) val c = Array("cjj", "jjc") b.len 阅读全文
摘要:
Scala 构造器和Java的构造方法有相似之处,Scala 构造器分为主构造器和附属构造器,主构造器只有一个,附属构造器可以有无数个。 主构造器 在我们对一个类实例化的时候,一定会调用主构造器,或显式调用或隐式调用的区别而已。 定义一个主构造器 class 类名(....) 主构造器可以携带参数列 阅读全文
摘要:
模式匹配是检查某个值(value)是否匹配某一个模式的机制,一个成功的匹配同时会将匹配值解构为其组成部分。 它是Java中的switch语句的升级版,同样可以用于替代一系列的 if/else 语句。 Scala的模式匹配语句对于使用案例类(case classes)表示的类型非常有用, 同时也可以利 阅读全文
摘要:
class 你可以使用class关键字定义一个类,后面跟着它的名字和构造参数。使用方法和Java中的class相似。 使用new关键字创建一个类的实例。 case class Scala有一种特殊的类叫做样例类(case class)。默认情况下,样例类一般用于不可变对象,并且可作值比较。你可以使用 阅读全文