新建项目:project->Non-SBT项目。
新建Scala Class->Kind选择Object。
HelloWorld代码:
object HelloWorld {
def main(args: Array[String]) {
var msg: String = "Hello World!";
print(msg);
}
}
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
val和var:
Scala有两种变量,val和var。val类似于Java里的final变量。一旦初始化了,val就不能再赋值了。与之对应的,var如同Java里面的非final变量。var可以在它生命周期中被多次赋值。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
函数调用,代码示例:
object MaxNum {
def main(args: Array[String]) {
println(max(3,5));
greet();
}
def max(x: Int, y: Int):Int={
if(x>y) x
else y;
}
def greet()={
println("HelloWorld");
}
}
* 在max参数列表的括号之后你会看到另一个“: Int”类型标注。这个东西定义了max函数的结果类型:result type。
* 如果函数仅由一个句子组成,你可以可选地不写大括号。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
While循环,代码示例:
def whileTest()={
val array = new Array[Int](3);
array(0)=1;
array(1)=2;
array(2)=3;
var i = 0;
while(i < array.length){
println(array(i));
i+=1;
}
}
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
foreach循环,代码示例:
def forEachTest()={
Array(1,2,3).foreach((a: Int) => print(a + " "));
println();
Array(1,2,3).foreach(print);
println();
//此处输出为:333435。+‘ ’后,默认转化未char类型了。
Array(1,2,3).foreach((a: Int) => print(a + ' '));
println();
"hello".foreach((s: Char) => print(s + " "));
println();
}
*这段代码:Array(1,2,3).foreach(print);,有点意思~
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
for循环,代码示例:
def forTest(){
for(a <- Array(1,2,3)){
print(a + " ");
}
}
或者:
val array = Array(1,2,3);
for(i <- 0 to 2){
print(array(i) + "");
}
*这个for表达式的第一行代码演示了Scala的另一个通用规则:如果方法仅带一个参数,你可以不带点或括号的调用它。本例中的to实际上是带一个Int参数的方法。代码0 to 2被转换成方法调用(0).to(2)。
*从技术上讲,Scala没有操作符重载,因为它根本没有传统意义上的操作符。取而代之的是,诸如+,-,*和/这样的字符可以用来做方法名。因此,当第一步里你在Scala解释器里输入1 + 2,你实际上正在Int对象1上调用一个名为+的方法,并把2当作参数传给它。
*这里对array(i)的访问时,Scala会自动转化成对名为apply的方法的调用,即:array.apply(i)。所以数组访问和其他的一般方法的访问并没有什么区别。这个原则不仅仅局限于数组:任何对某些在括号中的参数的对象的应用将都被转换为对apply方法的调用。当然前提是这个类型实际定义过apply方法。所以这不是一个特例,而是一个通则。
*同样,对array(i)赋值时,Scala会自动转化成对名为update的方法的调用,即:array.update(0,1)。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
参考于《Scala编程》。1、2章内容。