写原型的时候由于需要大量用到模式匹配和高阶函数,所以使用了scala
遇到的问题索引如下:
1. 如何把java的list转换成scala的list
import scala.collection.JavaConversions._
然后对java的list调用 toList方法
2. 如何定义字段,使得可以和java bean兼容
在每个字段前加上 @BeanProperty
3. map 的 遍历方法,如foreach 方法怎么写
map.foreach {elem:(String, String) => process(elem._1, elem._2)}
4. 从map中按照key取值,如果不存在就初始化,怎么写能简单写
map.get(key).getOrElse{initElem()}
5. 如何 match case 匹配正则
使用提取器
val Pattern = """(\w+)\.(\w+)""".r
case Pattern(first, second) => doSome(first, second)
6. 如何break 循环
import scala.util.control.Breaks._
breakable {
for( elem <- collection ) {
// do something
break()
}
}
7 如何简化log声明
trait LogTrait {
val logger = LoggerFactory.getLogger(getClass)
}
8 容易忽略的一个问题
def a = new b 和 val a = new b 都是合法的声明, 但是前者是方法,由于括号是可以省略的,因此对前者来说,a.x 每次都得到一个新的a