在Swift中,我可以创建一个类似的协议
protocol FoobarConvertible {
var foobar:String { get }
}
Run Code Online (Sandbox Code Playgroud)
然后使用一致的实现扩展系统中的任何类
extension String : FoobarConvertible {
var foobar:String {
get {
return "foobar"
}
}
}
Run Code Online (Sandbox Code Playgroud)
在Kotlin中,我认为接口类似于协议(?),我可以像这样声明一个
protocol FoobarConvertible {
val foobar:String
}
Run Code Online (Sandbox Code Playgroud)
但是我从文档(这似乎是简洁的练习)中看不出来的是我如何扩展Kotlin的String类以使其符合FoobarConvertible.显然,我可以在Kotlin字符串中添加一个扩展方法
val String.foobar:String
get() = "foobar"
Run Code Online (Sandbox Code Playgroud)
但是这不允许将字符串用作FoobarConvertible是预期类型的参数.
Kotlin没有这种语言功能,扩展功能和扩展属性就扩展功能而言 - 这些是可用的,因为它们可以通过静态辅助方法实现,这些方法只是将扩展的接收者作为其第一个参数.
但是,接口不能添加到您可能不会自己编译的现有类中 - 该功能不仅仅是语法糖.(至少在JVM上.)
| 归档时间: |
|
| 查看次数: |
591 次 |
| 最近记录: |