在Swift中,我们可以扩展一个带有接口的类,如下所示
extension MyExtend {
public var type: String { return "" }
}
extension MyOrigin: MyExtend {
public var type: ListItemDataType {
return "Origin"
}
}
我们在Kotlin有这种能力吗? (例如扩展接口)
答案 0 :(得分:2)
是的, Kotlin 确实有Extensions
- 类似于 Swift 。
<强>夫特强>:
class C {
func foo(i: String) { print("class") }
}
extension C {
func foo(i: Int) { print("extension") }
}
C().foo(i: "A")
C().foo(i: 1)
<强>科特林强>:
class C {
fun foo(i: String) { println("class") }
}
fun C.foo(i: Int) { println("extension") }
C().foo("A")
C().foo(1)
<强>输出强>:
class
extension
您希望阅读一些重要的差异。
扩展实际上并不修改它们扩展的类。通过定义 扩展,您不会将新成员插入到类中,而只是生成 新函数可以使用点符号对此变量进行调用 类型。
我们想强调调度扩展功能 静态地,即它们不是接收器类型的虚拟。这意味着 被调用的扩展函数由类型决定 调用函数的表达式,而不是函数的类型 在运行时评估该表达式的结果。