yetone / blog

7 stars 0 forks source link

[WIP] Scala 学习 📒 #1

Open yetone opened 8 years ago

yetone commented 8 years ago

1. 函数和方法的区别

def 是方法 =。= http://stackoverflow.com/a/2530007/4568509

2. 方法调用

2.1 ()

def a(x: Int) = x + 1
a(2)

2.2 {}

a{2}

2.3 逃~

// 因为:
{2} == 2
(2) == 2
// 所以下面都相当于 a(2):
a((((2))))
a{{{{2}}}}
a{{((2))}}
a(({{2}}))

2.4 省略括号

参见 #3

3. 括号的省略

3.1 无参方法

def a() = 1
a() // 1
a // 1

3.2 方法调用

无括号调用时必须得省略小数点

class A {
    def b(x: Int) = x + 1
}

val a = new A
a.b(2) // 3
a.b 2 // error 必须得省略小数点
a b 2 // 3

4. 伟大的 _

4.1 方法转函数

class A {
    def b(x: Int) = x + 1
}

val a = new A
a.b _ // Int => Int = <function1>
a.b(_) // function1 可以这样转
a.b(_, _) // function2 可以这样转,trait FunctionN 同理

4.2 Partial application

def adder(a: Int, b: Int) => a + b
val add2 = adder(_: Int, 2)

add2(1) // 3

你可以部分应用参数列表中的任意参数,而不仅仅是最后一个。