新建项目: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章内容。