2016-07-13 5 views
1

私は私が3.0迅速にないコードを変換していますし、コンパイラによってフラグが立てられている私は理解していないいくつかの行があります。このスウィフトコードでは、〜>(チルダより大きい)の意味は何ですか?

public func setupAppearance() 
{ 
    if let delegate = delegate 
    { 
     firstWeekday~>delegate.firstWeekday?() 
     dayOfWeekTextColor~>delegate.dayOfWeekTextColor?() 
     dayOfWeekTextUppercase~>delegate.dayOfWeekTextUppercase?() 
     dayOfWeekFont~>delegate.dayOfWeekFont?() 
     weekdaySymbolType~>delegate.weekdaySymbolType?() 
    } 
} 

NOTEこれがない - >(ダッシュは、より大きい) 〜>(チルダ、より大きい)

私はこの質問を見つけました: What is the ~> (tilde greater than) operator used for in Swift?しかし、それは非常に参考になりませんでした。

誰かがこれを読む方法について私にドキュメントを教えてもらえますか?残念ながらGoogle、stackoverflowとgithubは〜を検索できません。

おかげ

グレッグは

+3

誰かがカスタムオペレーターを作成しています(または、既存のオペレーターを乗っ取り、他のものを悪用してしまいました。コマンドを押しながらそれをクリックし、どこに行くかを確認します。 (私がカスタム演算子の使用を止める理由の1つ...) –

+0

@RobNapier '〜>'は「既存の演算子」ではないので、どういう意味ですか?実際には –

+1

です。パブリックな実装はありません。 Swiftヘッダーの演算子として定義されています。私が正しく覚えていれば、スイッチケースの実装の詳細として使用されるかもしれません。 –

答えて

1

元の開発者は、スレッドマーシャリングのSwiftカスタム演算子をiJoshSmithで使用していたと思います。

func ~> <R> (
    backgroundClosure:() -> R, 
    mainClosure:  (result: R) ->()) 
{ 
    dispatch_async(queue) { 
     let result = backgroundClosure() 
     dispatch_async(dispatch_get_main_queue(), { 
      mainClosure(result: result) 
     }) 
    } 
} 
+0

これを正しく理解すれば、このコードでは文書化されていないSwift機能を使用してデータ構造全体をあるオブジェクトから別のオブジェクトにコピーします。これはメインスレッドで行われますか? –

+0

スウィフトのカスタム演算子は、バックグラウンドスレッドの左閉包を実行し、完了するとメインスレッドの右クローズを実行します。このライブラリを実際に使用している場合、またはコードの元の作成者がその演算子の独自の実装を作成した場合は、ソースコードを確認することもできます。 –

+0

これは、彼ら自身の演算子を作成したという点で正しい答えです:中演算子〜> { public func〜>(lhs:inout T ?, rhs:T?) - > T? { if lhs!= nil && rhs!= nil { lhs = rhs } return lhs } –

関連する問題