私は単純な変換を行っています(例えば、imperialからmetricへ)。私は(String、Closure)要素を持つタプルの配列を作成しました。これにより、変換の文字列(たとえば「マイルからキロメートル」をピッカーコントロールに入れて、関連する数式を1行で参照して変換する値を渡すことができます。 。「合理的な時間内に解決するには複雑すぎる表現」:Xcode Swift:式が複雑すぎて妥当な時間に解決できない
は、初期クラスステートメントの下のViewControllerのプロパティを使用して宣言:
var formulaTuple = [(convString: String, convFormula: ((Double) -> Double))]()
閉鎖速記私はエラーを取得する
はここで働く宣言&コードです
viewDidLoad()で割り当てられる
formulaTuple = [("miles to kilometers", {(a: Double) -> Double in return (a/0.62137) }),
("kilometers to miles", {(a: Double) -> Double in return (a * 0.62137) }),
("feet to meters", {(a: Double) -> Double in return (a/3.2808) }),
("yards to meters", {(a: Double) -> Double in return (a/1.0936) }),
("meters to feet", {(a: Double) -> Double in return (a * 3.2808) }),
("meters to yards", {(a: Double) -> Double in return (a * 1.0936) }),
("inches to centimeters", {(a: Double) -> Double in return (a/0.39370) }),
("centimeters to inches", {(a: Double) -> Double in return (a * 0.39370) }),
("fahrenheit to celsius", {(a: Double) -> Double in return ((a - 32) * (5/9)) }),
("celsius to fahrenheit", {(a: Double) -> Double in return (a * (9/5) + 32) }),
("quarts to liters", {(a: Double) -> Double in return (a/1.05669) }),
("liters to quarts", {(a: Double) -> Double in return (a * 1.05669) }) ]
コードで作業しています。ここで、rowはクリックされたピッカーの行、inputValueは変換するために渡されたもの、outputValueは変換の結果です。
outputValue = formulaTuple [行] .convFormula(inputValueで)Iは、のviewDidLoad(でこの構文を使用して宣言をダウントリムするとき
問題が生じる)の代わりに上記synatax:
formulaTuple = [("miles to kilometers", {$0/0.62137 }),
("kilometers to miles", {$0 * 0.62137 }),
("feet to meters", {$0/3.2808 }),
("yards to meters", {$0/1.0936 }),
("meters to feet", {$0 * 3.2808 }),
("meters to yards", {$0 * 1.0936 }),
("inches to centimeters", {$0/0.39370}),
("centimeters to inches", {$0 * 0.39370 }),
("fahrenheit to celsius", {($0 - 32) * (5/9) }),
("celsius to fahrenheit", {$0 * (9/5) + 32 }),
("quarts to liters", {$0/1.05669 }),
("liters to quarts", {$0 * 1.05669 }) ]
Iこれがよりスムーズになると思ったが、Xcodeが壊れているようだ。思考?私のアプローチは根本的に不健全で、別の方法が推奨されるのでしょうか? ありがとう!
構造体は非常にうまく機能しました。私はTuplesのSwiftドキュメントを再読み込みし、一時的なタイプについて少し注意を払った。あなたの提案、洞察、および背景を本当に感謝します。ありがとう! – Gallaugher