(scala 语句和表达式几乎都有值) PK (java 中语句有值,表达式执行动作)
1. 条件表达式
if (x > 0) 1
else - 1
可以将表达式结果直接赋值给变量
val s =
if (x > 0) 1
else - 1
scala 支持混合型表达式
if (x > 0)"positive"
else - 1
在 scala 中每个表达式都应有值
if (x > 0) 1
else() //()表示Unit类,即占位符
2. 语句终止,表达式赋值与输出打印
①.scala 行尾一般不添加;结尾
②. 表达式赋值的返回值为 Unit,所以 scala 不支持 x=y=1 这种连续赋值 [结果为 y=1,x=Unit 是没有意义的]
③.scala 既支持 java 风格的 println/print 方式输出,也支持 c 风格的 printf 格式输出
3. 循环
①.while 循环
int x = 10 int i = 0
while (x > 0) {
i += x x -= 1
}
②.for 循环: [1 to n] 是一个 Range 集合
int r = 0 int n = 10
for (i < -1 to n) {
r += i
}
当不需要上限时,使用 util 代替 to
String s = "hello"
for (i < -0 until s.length) {
print(i)
}
或者简写为
for (ch < -"hello") print(ch)
③. 高级 for
多个生成器,逗号分隔
for (i < -1 to 3; j < -1 to 3) print("i*j=" + i * j + " ")
守卫:if 开头的 Boolean 表达式
for (i < -1 to 3; j < -1 to 3
if j != i) print("i*j=" + i * j + " ")
使用定义,比如定义 from
for (i < -1 to 3; from = 4 - i; j < -from to 3) print("i*j=" + i * j + " ")
④.for 推导式:for 循环体以 yield 开始,会生成一个集合,每次迭代生成集合中的一个值
for (i < -1 to 10) yield i * 3
4. 函数
scala 的方法操作对象,而函数不是.
函数定义:函数名,参数,函数体
函数返回值:无需定义 return,默认使用最后一个表达式返回;类型为 = 右侧表达式的类型
def abs(x: Double) =
if (x >= 0) x
else - x
递归函数需要定义返回值类型
def fac(n: Int) : Int =
if (n <= 0) 1
else n * fac(n - 1)
5. 过程
如果函数体包含在 {} 中但没有前面的 =,则返回值类型为 Unit,这类函数称为过程.
看过本文的人也看了:
来源: http://lib.csdn.net/article/scala/34643