Scala课堂(2):基础(一)

jerry Scala 2015年11月25日 收藏

这里我们转载Twitter的Scala课堂  ,转载的内容基本来自Twitter的Scala课堂中文翻译,部分有小改动.

表达式

  1. scala> 1 + 1
  2. res0: Int = 2

res0是解释器自动创建的变量名称,用来指代表达式的计算结果。它是Int类型,值为2。

Scala中(几乎)一切都是表达式。


你可以给一个表达式的结果起个名字赋成一个不变量(val)。

  1. scala> val two = 1 + 1
  2. two: Int = 2

变量
如果你需要修改这个名称和结果的绑定,可以选择使用var

  1. scala> var name = "steve"
  2. name: String = steve
  3.  
  4. scala> name = "marius"
  5. name: String = marius
  6.  

函数
你可以使用def创建函数.

  1. scala> def addOne(m: Int): Int = m + 1
  2. addOne: (m: Int)Int

在Scala中,你需要为函数参数指定类型签名。

  1. scala> val three = addOne(2)
  2. three: Int = 3

如果函数不带参数,你可以不写括号。

  1. scala> def three() = 1 + 2
  2. three: ()Int
  3.  
  4. scala> three()
  5. res0: Int = 3
  6.  
  7. scala> three
  8. res2: Int = 3
  9.  

匿名函数
你可以创建匿名函数。

  1. scala> (x: Int) => x + 1
  2. res3: Int => Int = <function1>

这个函数为名为x的Int变量加1。

  1. scala> res3(1)
  2. res4: Int = 2

你可以传递匿名函数,或将其保存成不变量。

  1. scala> val addOne = (x: Int) => x + 1
  2. addOne: Int => Int = <function1>
  3.  
  4. scala> addOne(1)
  5. res5: Int = 2
  6.  

如果你的函数有很多表达式,可以使用{}来格式化代码,使之易读。

  1. def timesTwo(i: Int): Int = {
  2. println("hello world")
  3. i * 2
  4. }

对匿名函数也是这样的

  1. scala> { i: Int =>
  2. | println("hello world")
  3. | i * 2
  4. | }
  5. res6: Int => Int = <function1>

在将一个匿名函数作为参数进行传递时,这个语法会经常被用到