作者Schelfaniel (Schelfaniel)
看板java
标题Re: [问题] 将callback转型成原本的class
时间Tue Oct 15 01:01:22 2013
Hi:
我试着用Scala写一个,你看看和你要的相不相同...
// 先定一个 test_callback,传入值为 Unit
// 效果为印出 before callback,执行 callback,印出 after callback
def test_callback(callback: => Unit) {
println("before callback")
callback
println("after callback")
}
// callback 为 印出 x ,所以会看到 before callback, x, after callback 三行
test_callback(println("x"))
// 试试复杂一点的,在中间插入印出 1 到 10
test_callback {
1.to(10).foreach(println(_))
}
// 定义一个 class 有两个函数 x1 是不带参数的 x2 有带一个字串
class A {
def x1(): Unit = println("x1")
def x2(s: String): Unit = println("x2" + s)
}
// 抽出 A 的 x 函式
val f1: Function[A, Unit] = _.x1()
val f2: Function2[A, String, Unit] = _.x2(_)
// 因为它函式不是 static 要有一个实体
val a = new A()
// 测试...这行也可以直接写 test_callback(a.f1())
test_callback(f1(a))
// 同上这行也可以直接写 test_callback(a.f2("000"))
test_callback(f2(a, "000"))
Java 8 其实我没有研究很深,但是 Scala 的 callback 感觉还蛮好写的...
习惯之後反而会不习惯写 Java :QQ
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.251.147.194
1F:推 liu2007:刚刚去看了一下版上和辜狗的介绍,scala还满有趣的XDD 10/15 16:25
2F:→ Schelfaniel:如果有Scala问题可以互相讨论唷 ^o^ 10/16 13:31