為 Scala 引入 delegate

Glavo/delegate?

github.com圖標

我們知道,Kotlin 中我們可以用委託屬性語法來把一個屬性的實現委託到另一個屬性上。Scala 雖然沒有這樣的原生語法,但是我們能通過宏實現類似的功能。

import org.glavo.delegate._class StringProperty { var value: String = "" }class C { @Delegate(name: String) val nameProperty: StringProperty = new StringProperty()}val c = new Cassert(c.name == "")c.name = "Glavo"assert(c.name == "Glavo")assert(c.nameProperty.value == "Glavo")

推薦閱讀:

Kotlin 終於成為了 Android 的官方支持語言
Kotlin 語言培訓市場規模有多大?
Kotlin傳教文 上
關於Kotlin語法的異議

TAG:Scala | 宏編程語言 | Kotlin |