scala学习笔记01

编辑器:IntelliJ IDEA

新建项目: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;
    }
  }


*i += 1,让i自增一。注意Java的++i和i++在Scala里不起作用,要在Scala里自增,必须写成要么i = i + 1,或者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章内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值