2016-10-15 3 views
-2

私がやりたいことが現在実行可能であることは完全にはわかりませんが、私はそうであると願っています。
基本的には、プリミティブのオブジェクト作成を少し短くするためのメカニズムが必要です。私に説明させてください。すなわち、Swift:プリミティブな値からオブジェクトを作成する

class Wrapper { 
    var value: Int = 0 

    init(value: Int) { 
     self.value = value 
    } 
} 

そして代わりにinitでオブジェクトを作成する:我々がintのラッパーのいくつかの種類を持って考えてみましょう

let wrapper = Wrapper(value: -1) 

私はこのような何かをしたいと思います:

let wrapper: Wrapper = -1 

または:

var array = [Wrapper]() 
array.append(-1) 

特に配列の場合には、宣言が非常に重くなります。
興味深いノートは:

let val: CGFloat = 0.0 
var array = [CGFloat]() 
array.append(0.0) 

、すべてが正常に動作しているようだ:私はCGFloatすなわちで上記のコードをテストしてみました。しかし、私は完全にカスタムオブジェクトのためのそのような振る舞いを作成することを可能にする言語の方法があるとは確信していないので、私は基本的にそれについて尋ねています。私はCGFloatのソースを見直しましたが、達成したい機能に関連しているようなものは見ませんでした(NativeTypeエイリアスがあるかもしれませんが、どのように動作するのか理解できませんでした)。

class Wrapper : ExpressibleByIntegerLiteral { 
    var value: Int = 0 

    required init(integerLiteral value: Int) { 
     self.value = value 
    } 

    init(value: Int) { 
     self.value = value 
    } 
} 

そして今、あなたが言うことができます:このように

答えて

3

let w : Wrapper = 1 
関連する問題