定义变量:
1.
Scala 有两种变量,val和var。val类似于 Java里的final变量。一旦初始化了,val就
不能再赋值了。与之对应的,var 如同 Java 里面的非 final 变量。var 可以在它生命周期
中被多次赋值。
2.Java中变量的类型指定在其名称之前,与之不同的是,
Scala 里变量的类型在其名称之后,用冒号分隔。
如:
scala> val msg2: java.lang.String = "Hello again, world!"
msg2: java.lang.String = Hello again, world!
定义函数
3.scala> def max(x: Int, y: Int): Int = {
if (x > y) x
else y
}
max: (Int,Int)Int
函数的定义用def开始。函数名,本例中是max,跟着是括号里带有冒号分隔的参数列表。
每个函数参数后面必须带前缀冒号的类型标注,因为Scala编译器(还有解释器,但之后我
们将只说编译器)没办法推断函数参数类型。本例中,名叫max的函数带有两个参数,x和
y,都是Int类型。在max参数列表的括号之后你会看到另一个“: Int”类型标注���这个东
西定义了max函数的结果类型:result type。 跟在函数结果类型之后的是一个等号和一对
包含了函数体的大括号。
4.scala> def greet() = println("Hello, world!")
greet: ()Unit
当你定义了 greet()函数,解释器会回应一个 greet: ()Unit。“greet”当然是函数名。
空白的括号说明函数不带参数。Unit 是 greet 的结果类型。 Unit 的结果类型指的是函数
没有返回有用的值。Scala 的 Unit 类型比较接近 Java 的 void类型,而且实际上 Java 里
每一个返回 void 的方法都被映射为 Scala 里返回 Unit 的方法。因此结果类型为 Unit 的
方法,仅仅是为了它们的副作用而运行。在 greet()的例子里,副作用是在标准输出上打
印一句客气的助词。
5.scala的字符串连接
String使用+操作符的连接。这与你的预期一样。 表达式"Hello, "+"world!"将产生字符串"Hello, world!"。
6.scala里访问数据元素用圆括号而不是方括号
Scala ��,数组以零开始,通过在括号里指定索引访问一个元素。所以 Scala 里数组 steps的第一个元素
是 steps(0),不是像 Java 里的 steps[0]。
7.获取数组长度
args.length 给出了 args 数组的长度
8.自增
i += 1,让i自增一。
注意Java的++i和i++在Scala 里不起作用,要在Scala 里自增,必须写成要么i = i + 1,或者i += 1。
9.循环
var i = 0
while (i < args.length) {
if (i != 0)
print(" ")
print(args(i))
i += 1
}
println()
注意 Scala 和 Java 一样,必须把 while 或 if 的布尔表达式放在括号里。(换句话说,就
是不能像在 Ruby里面那样在Scala 里这么写:if i < 10。在Scala 里必须写成if (i <
10)。) 另外一点与 Java 类似的,是如果代码块仅有一个句子,大括号就是可选的,就像
echoargs.scala里面if句子演示的。并且尽管你没有看到, Scala也和 Java一样使用分
号分隔句子的,只是 Scala 里的分号经常是可选的,从而可以释放你的右小手指。
10.foreach
def process(aa:Array[String]){
aa.foreach(arg => println(arg))
// aa.foreach((arg:String)=>println(arg))
}
函数体有两句,它们是等价的。
11. 函数文本的语法就是,括号里的命名参数列表,右箭头,然后是函数体。如图
12.for
def process(aa:Array[String]){
for(arg <- aa)
println(arg)
}
与第10条的代码等价