Re: [問題] 將callback轉型成原本的class
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
推
10/15 16:25, , 1F
10/15 16:25, 1F
→
10/16 13:31, , 2F
10/16 13:31, 2F
討論串 (同標題文章)
完整討論串 (本文為第 8 之 9 篇):
java 近期熱門文章
PTT數位生活區 即時熱門文章