如何在swift中定义显式的转换操作符?

时间:2014-10-16 04:05:44

标签: swift casting

背景

我有一个想要隐藏实现细节的类。

class Foo
{
  var i : Int
}

let f = Foo()

有没有办法定义一个显式的强制转换操作符,以便在f as Int上调用?

如果没有,是否有我应该使用的规范方法名称,如asInt() -> Int

1 个答案:

答案 0 :(得分:3)

我不知道这是你想要的,但你可以像Int初始化器一样实现强制转换:

extension Int {
    init(_ foo:Foo) {
        self = foo.i
    }
}

let f = Foo()
f.i = 12
let intVal = Int(f) // -> 12