scala学习之scala与java的一些区别(二)
不带命令行参数的简化main方法: object app1 extends Application { println("hello world") }
Scala的import可以只在局部作用域内生效; 可以格式 “import javax.swing.{JFrame=>jf}”来声明类型的别名。 jf.show() l import javax.swing._ l import java.util.{List,Map} l import java.util._,java.io._ Scala 缺省导入以下包: l java.lang.* l scala.* l scala.Predef for .. yield 把每次循环的结果“移”进1个集合(类型和循环内的1致) for {子句} yield {循环体}
正确: for (e<-List(1,2,3)) yield (e*e) // List(1,4,9) 毛病: for (e<-List(1,3)) { yield e*e } // 语法毛病,yield不能在任何括号内 reduceLeft:reduceLeft 方法首先利用于前两个元素,然后再利用于第1次利用的结果和接下去的1个元素,等等,直至全部列表。例如 计算阶乘: def fac(n: Int) = 1 to n reduceLeft(_*_) fac(5) // 5*4*3*2 = 120 相当于: ((((1*2)*3)*4)*5) 计算sum: List(2,6).reduceLeft(_+_) // 12 ((2+4)+6) 取max: List(1,9,6,7).reduceLeft( (x,y)=> if (x>y) x else y ) // 9 或简化为: List(1,7).reduceLeft(_ max _) // 9 ((((1 max 4) max 9) max 6) max 7)
Scala中没有break和continue语法!需要break得加辅助boolean变量,或用库(continue没有). Scala没有操作符,更谈不上操作符重载;+-/*都是方法名,如1+2实际上是(1).+(2) 阶乘: 第1步:写函数
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |