Chinaunix首页 | 论坛 | 博客
  • 博客访问: 622003
  • 博文数量: 233
  • 博客积分: 2221
  • 博客等级: 大尉
  • 技术积分: 3184
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-16 14:01
个人简介

瓜瓜派的瓜瓜

文章分类

全部博文(233)

文章存档

2013年(28)

2012年(197)

2011年(8)

分类: Java

2013-02-03 16:38:21

今天继续学习Scala,练手。

1. 一个数字如果是正数,则它的signum为1,如果为负数,则它的signum为-1,如果是0,则它的signum为0。编写一个函数计算该值。
Ans:
def sig_num(x: Double= {
   if (x.signum == 1x + "是正数"
   else if (x.signum == -1x + "是负数"
   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 = 10i >= 0i--) System.out.println(i);
Ans:
scala> for (i <- 0 to 10println(10 - i)
scala> for (i <- 0 to 10from = 10 - iprintln(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 - iprint(from + " ")
}
结果:
scala> countdown(6)
6 5 4 3 2 1 0




阅读(2532) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~