2014-10-16 3 views
2

Как определить явный оператор литья в swift?

У меня есть класс, который хочет скрыть детали реализации.

class Foo 
{ 
    var i : Int 
} 

let f = Foo() 

Есть ли способ определить явный оператор в произнесении, так что вызывается на f as Int?

Если нет, есть ли название канонического метода, которое я должен использовать как asInt() -> Int?

+0

Вы не можете использовать 'как' таким образом для _любой_ типа. Вы не можете сказать '4 как Double', так почему же, на ваш взгляд, это возможно для вашего объекта? Это не то, что «как» означает в Свифте. – matt

ответ

3

Я не знаю, что это то, что вы хотите, но вы можете реализовать бросание как Int инициализаторе:

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

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

это, кажется, ближе всего к тому, что я ищу - – kfmfe04

Смежные вопросы