今天继续学习Scala,练手。
1. 一个数字如果是正数,则它的signum为1,如果为负数,则它的signum为-1,如果是0,则它的signum为0。编写一个函数计算该值。
Ans:
def sig_num(x: Double) = {
if (x.signum == 1) x + "是正数"
else if (x.signum == -1) x + "是负数"
else "这个数是0"
}
println(sig_num(0))
println(sig_num(3))
println(sig_num(-2.8))
结果:
D:\dev\scala>scala sig_num.scala
这个数是0
3.0是正数
-2.8是负数
Scala没有三元运算符“?:”,没有switch语句,Scala的“if/else”语句很强大,最大特点是有值,就是“if/else”后面表达式的值。
2. 一个空的块表达式{}的值是什么?类型是什么?
Ans:
值为(),类型为Unit。Unit相当于Java的void,()是个值,表示“无有用值”。
结果:
scala> val b = {}
b: Unit = ()
3. Scala中,何种情况下,赋值语句x = y = 1是合法的?
Ans:
在Scala中,赋值语句本身的值是Unit类型的,所以,在以下情况下x = y = 1才是合法的(x是相应的Unit类型),同时,x和y必须是var声明。
scala> var x= ()
x: Unit = ()
scala> var y = 1
y: Int = 1
scala> x = y = 1
x: Unit = ()
4. 针对下列Java循环写一个Scala版:
for (int i = 10; i >= 0; i--) System.out.println(i);
Ans:
scala> for (i <- 0 to 10) println(10 - i)
scala> for (i <- 0 to 10; from = 10 - i) println(from)
以上两种方法都可以。
结果:
10
9
8
7
6
5
4
3
2
1
0
5. 编写一个过程countdown(n: Int),打印从n到0的数字
Ans:
def countdown(n: Int) {
for (i <- 0 to n; from = n - i) print(from + " ")
}
结果:
scala> countdown(6)
6 5 4 3 2 1 0
阅读(2592) | 评论(0) | 转发(1) |