def t2(name:String):Unit=()
var list=List(t2 _)
list= list:+a1 _
list= list:+a2 _
list= list:+a3 _
// 这里要说以下:+操作 不会改变原来的list 只会产生一个新的list 所以
//不是 java里面的 list.add() 操作 被误导了好久。。
最后轮询调用
for(f<-list){
// println(f.toString())
f.apply(name) 这里也可以直接写成 f(name)
}
这里有几点 注意 list(t2 _) 不是中括号
以后回来在补充。。。
不能使用
var list=List[(String)=>Any]
虽然idea不报错 但是编译不会通过的 但是 List[Int] 这种式可以的
scala> val list2=List[String => Any]
<console>:23: error: missing argument list for method apply in object List
Unapplied methods are only converted to functions when a function type is expected.
You can make this conversion explicit by writing `apply _` or `apply(_)` instead of `apply`.
val list2=List[String => Any]
^

可以看到 Function是一个Object 而Function1 和Function2 是trailt
在scala里面 List[] 这里面 只接受 class 类型 List() 接受实例类型