定义一个函数: scala> def foo(x:Int)=x*2 foo: (x: Int)Int 可以采用匿名参数: scala> def foo:((Int)=>Int) = _*2 foo: Int => Int 这个函数的类型是Int=>Int: scala> var bar = foo _ bar: Int => Int = <function1> scala> var bar:(Int)=>Int = foo bar: Int…
scala> import scala.reflect._ import scala.reflect._ scala> class Person(@BeanProperty var name: String, val gender: Boolean=true){} defined class Person scala> val p = new Person("bluejoe") p: Person = Person@5905edf2 scala> p.setNa…
笔记的整理主要针对Scala对比Java的新特性: 1.if表达式 if表达式是有结果返回的. val a= if (5>2) "你好" else 1 a的值为if表达式返回值为 "你好" 2.while表达式 while表达式是没有返回值的(返回值为 Unit),在scala中避免使用,通常都需要与var结合使用 3.for表达式 枚举集合遍历 val a = Array(1,2,3,4,5,6) for (i <- a) println(…
一.多继承 上篇trait中,已经看到了其用法十分灵活,可以借此实现类似"多重继承"的效果,语法格式为: class/trait A extends B with C with D ... 之所以要给多重继承加一个引号,是因为这有约束条件的,上面的语法中,从左向右看,extends 后的B是A的基本类型,不管后面接多少个trait,如果C或D,本身又继承自其它class(上一篇讲过,trait也可以继承自class),则C或D的基类必须与B的基类保持一致,否则的话,JVM上的OOP世界…
先看个正常的写法: scala> val x = 1 x: Int = 1 体会一下元组的写法: scala> val (x,y,z)=(1,2,3) x: Int = 1 y: Int = 2 z: Int = 3 再来体会一个Array的匹配: scala> val Array(x,y,_)=Array(1,2,3) x: Int = 1 y: Int = 2 很好理解嘛!调用了Array伴生对象的unapplySeq(arr)嘛! 再来看个崩溃一点的: scala> val…