背景
我有一个想要隐藏实现细节的类。
class Foo
{
var i : Int
}
let f = Foo()
有没有办法定义一个显式的强制转换操作符,以便在f as Int
上调用?
如果没有,是否有我应该使用的规范方法名称,如asInt() -> Int
?
答案 0 :(得分:3)
我不知道这是你想要的,但你可以像Int
初始化器一样实现强制转换:
extension Int {
init(_ foo:Foo) {
self = foo.i
}
}
let f = Foo()
f.i = 12
let intVal = Int(f) // -> 12