加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

scala学习之scala与java的一些区别(二)

发布时间:2020-12-13 21:09:17 所属栏目:PHP教程 来源:网络整理
导读:不带命令行参数的简化 main 方法: object app1 extends Application { println(hello world) } Scala 的 import 可以只在局部作用域内生效; 可以式 “ import javax.swing.{JFrame= jf } ”来声明类型的别名。 jf .show() l import javax.swing._ l import

不带命令行参数的简化main方法:

object app1 extends Application {

    println("hello world")

}

Scalaimport可以只在局部作用域内生效;

可以格式 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没有breakcontinue语法!需要break得加辅助boolean变量,或用库(continue没有).

Scala没有操作符,更谈不上操作符重载;+-/*都是方法名,如1+2实际上是(1).+(2)

阶乘:

第1步:写函数
def factorial(n: Int) = 1 to n reduceLeft(_*_)
第2步:定义 "!" 函数
class m1(n: Int) {
def ! = factorial(n)
}
第3步:使用
val n = 100
printf("%d! = %sn",n,(n!))  // n! 相当于 new m1(n).!()
println(10!)


(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读