2016-05-19 9 views
0

if...then...elseを3値で置き換えることができますか?それとも2つのうちどちらが最も読みやすくクリアされているのでしょうか?スウィフトの三元派とは、いつでも交換しなければならないのでしょうか?

など。変更:

If condition { 
    doSomething 
} else { 
    doSomethingElse 
} 

変数の代入で約
condition ? doSomething : doSomethingElse 

方法:

If condition { 
    myProperty += 1 
} else { 
    myProperty -= 1 
} 

へ:

myProperty = condition ? myProperty + 1 : myProperty - 1 

編集:彼らの人々の意見を見ていません好きですが、可能であれば、三者で他の人と交換するための専門的な練習を受け入れました。

+0

スウィフトスタイルのグランドアルティメットの法則、その名前が祝福されていること、または私たちの考えを尋ねていますか? – jtbandes

+0

あなたはすでに答えを知っています... – Wain

+0

個人的に私はどちらかが最も気に入っていて読みやすいと思っています。私の2番目の例では3つ目のバージョンがちょっとぎこちないとわかりましたが、プロのアプリケーションプログラマーの間に「受け入れられた標準」があるかどうかはわかりませんでした(私の最もよく使われている言語には3進がありません。そうでない場合は、キーワード。単にニーモニック)。 –

答えて

3

両方とも有効であり、パフォーマンスに違いがないため、目標は読みやすさです。

単純なインライン決定には3項条件を使用します。適切なインラインまたは基本的な算術演算よりも複雑ではないでしょう何のために

、それはおそらく通常の条件文を使用することがより読みやすいでしょう

Appleはスウィフト2.2ドキュメント

に本の偉大な例を持っていますスウィフト2.2アップルのドキュメントから

例:

let contentHeight = 40 
let hasHeader = true 
let rowHeight = contentHeight + (hasHeader ? 50 : 20) 
// rowHeight is equal to 90 

は、私は上記のクリーナー以下と非常に同じように読み取り可能であると言うでしょう。

let contentHeight = 40 
let hasHeader = true 
let rowHeight: Int 
if hasHeader { 
    rowHeight = contentHeight + 50 
} else { 
    rowHeight = contentHeight + 20 
} 
// rowHeight is equal to 90 
1

いいえ.3項演算子は、2つの式のうちの1つの値を選択するためにのみ使用してください。あなたの議論が "名詞"であるなら、それは適切であると考えてください。アクションを実行する場合には

let wheels = isTricycle ? 3 : 2 

、またはより複雑な引数を持つ、伝統的なifステートメントを使用します。たとえば。

Appleは三項演算子の例の唯一のこれらのタイプを提供し、具体的に述べ、「スウィフトプログラミング言語」のiBookでできるだけ多くを語る:

「三項条件演算子を決定するための効率的な速記を提供どちらの表現を考慮すべきかただし、三項条件演算子は注意して使用してください。使い古された場合、その簡潔さは読みにくいコードにつながる可能性「から

抜粋:アップル社 『。スウィフトプログラミング言語(スウィフト2プレリリース)』をiBooksの。

+0

ニコラスの返答を受け入れて、彼が最初にそれを手に入れました。 –

関連する問題