Avatar
public func undefined<T>(file: StaticString = #file, line: UInt = #line) -> T { fatalError("undefined", file: file, line: line) } class Class { class StaticStorage { lazy var value: Int = undefined() static let shared = StaticStorage() } static var value: Int { get { return StaticStorage.shared.value } set { StaticStorage.shared.value = newValue } } } // 代入前にreadするとクラッシュ // print(Class.value) Class.value = 3 print(Class.value) (edited)
10:22 AM
とりあえずやりたいことはできた↑
10:27 AM
ですね
10:27 AM
こっちでもSIL吐いて読んでみたんですけど
10:30 AM
セッター _T01a5ClassC5valueSivsZ ストレージを取得する関数 _T01a5ClassC5valueSivau この中に、 "once" ってbuildinコマンドの呼び出しがある そのonceに渡されている関数。 globalinit_33_EFF83A1F47B777EA672D48C97C71346F_func0 その中で呼ばれてる関数 _T01a5ClassC5valueSivpZfiSiycfU_ この中に、preconditionFailureの呼び出しがある。 _T0s19preconditionFailures5NeverOSSyXK_s12StaticStringV4fileSu4linetFfA_ (edited)
10:32 AM
マングリングの Sivau で検索してみたら、 lazy とか global とか書いてあるのがいろいろでてきた。 https://github.com/apple/swift/search?utf8=✓&q=Sivau&type=