【发布时间】:2018-12-14 06:19:33
【问题描述】:
在 Swift 中,我可以创建一个类似的协议
protocol FoobarConvertible {
var foobar:String { get }
}
然后用符合规范的实现扩展系统中的任何类
extension String : FoobarConvertible {
var foobar:String {
get {
return "foobar"
}
}
}
在 Kotlin 中,我认为接口类似于协议(?),我可以这样声明一个
protocol FoobarConvertible {
val foobar:String
}
但是从文档(这似乎是一个简洁的练习)对我来说并不明显的是,我将如何扩展 Kotlin 的 String 类以使其符合 FoobarConvertible。显然,我可以在 Kotlin 字符串中添加一个扩展方法
val String.foobar:String
get() = "foobar"
但这不允许将字符串用作参数,其中 FoobarConvertible 是预期的类型。
【问题讨论】:
-
装饰器。准备好编写装饰器。到处。 en.wikipedia.org/wiki/Decorator_pattern