首页 > 其他 > 详细

Scala学习---1

时间:2015-10-28 12:54:14      阅读:283      评论:0      收藏:0      [点我收藏+]
  • 变量

所有的Java原始类型在scala包里都有对应的类。

eg:

    scala.Boolean对应着Java的boolean。

    scala.Float对应着Java的float。

当你把你的Scala代码编译成Java字节码,Scala编译器将使用Java的原始类型以便获得其带来的性能益处。


Java中变量的类型指定在其名称之前,与之不同的是,Scala里变量的类型在其名称之后,用冒号分隔


val和var。

val类似于Java里的final变量。一旦初始化了,val就不能再赋值了。

eg:

    val msg = "Hello, world!"

    val msg : String = "Hello, world!"

    

var如同Java里面的非final变量。var可以在它生命周期中被多次赋值

eg:

    var greeting = "Hello, world!"

    var greeting : String = "Hello, world!"


Scala变量特性:

类型推断:type inference,能自动理解你省略的类型的能力

val msg = "Hello, world!"


  • 函数 

def 函数名 ([变量名:类型[,变量名:类型]]) [: 结果类型] = { 逻辑语句 }

函数的定义用def开始。函数名,括号里带有冒号分隔的参数列表。

结果类型:如果函数是递归的,必须显式地定义函数结果类型

eg:

    def max(x: Int, y: Int): Int = { 

    if (x > y) x else y 

    }

既不带参数也不返回有用结果的函数定义

eg:

def greet() = println("Hello, world!")

当你定义了greet()函数,解释器会回应一个greet: ()Unit。

“greet”当然是函数名。

空白的括号说明函数不带参数。

Unit是greet的结果类型。Unit类型比较接近Java的void类型,而且实际上Java里每一个返回void的方法都被映射为Scala里返回Unit的方法

PS:

每个函数参数后面必须带前缀冒号的类型标注,因为Scala编译器没办法推断函数参数类型

scala用 if (x > y) x else y 代替了 java中的三目运算(“(x > y) ? x : y)


Scala学习---1

原文:http://my.oschina.net/vitoh/blog/522987

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!