タグ付けされた質問 「dispatch」

29
Swiftでdispatch_onceシングルトンモデルを使用する
Swiftでの使用に適したシングルトンモデルを作成しようとしています。これまでのところ、スレッドセーフでないモデルを次のように機能させることができました。 class var sharedInstance: TPScopeManager { get { struct Static { static var instance: TPScopeManager? = nil } if !Static.instance { Static.instance = TPScopeManager() } return Static.instance! } } Static構造体でシングルトンインスタンスをラップすると、複雑な名前付けスキームなしでシングルトンインスタンスと衝突しない単一のインスタンスが許可され、かなりプライベートになるはずです。もちろん、このモデルはスレッドセーフではありません。だから私dispatch_onceは全部に追加しようとしました: class var sharedInstance: TPScopeManager { get { struct Static { static var instance: TPScopeManager? = nil static var token: dispatch_once_t …

2
ジュリアにおける機能署名と派遣行動の明確化
ジュリア(1.2)REPLでいくつかのことを試していましたが、ディスパッチについてわからないことを思いつきました。 私は最初に私が期待した方法で機能しているこのことを試しました: f(a::T) where {T <: Int} = "Test" f(3)の呼び出しは、 Int <: Int == true f( "Hello")を呼び出すと、「MethodError:no method matching」エラーが発生します。 String <: Int == false 次に、私はこのメソッドを試しましたが、なぜそれを呼び出すことがいくつかのケースで機能するのかわかりません: f(a::T, b::U) where {T, U <: T} = "Another Test" f(3、3)を呼び出すと(期待どおり)機能します しかしf(3、 "Hello")も機能し、「MethodError:no method matching」をスローしません??? 私はそれを考えました(TがIntになり、Uが文字列になるため)String <: Int == false??? ここにはかなり簡単なものが欠けていると思いますが、見つかりません...これが私の質問です。なぜf(3、 "Hello")が機能しているのですか? さらに、私はこのコードスニペット(2番目のメソッドシグネチャを再作成しようとしました)を試しましたが、期待どおりに正しく失敗しました。 Test = …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.