web-dev-qa-db-ja.com

Swiftの括弧の数を減らす

誰かが迅速に何らかの種類の速記を使用する方法があるかどうか知っていますか?より具体的には、IFステートメントのようなものの中括弧を省きます...

if num == 0
  // Do something

の代わりに

if num == 0
{
  // Do something
}

ネストされたIFがいくつかある場合、これらの中括弧はかなりスペースを消費します。

PS。私は次のことができることを知っています:

if num == 0 {
  // Do something }

しかし、私はそのようなことが可能かどうかまだ興味があります

17
Byron Coetsee

出来るよ :

let x = 10, y = 20;
let max = (x < y) ? y : x ; // So max = 20

そして、非常に興味深いこと:

let max = (x < y) ? "y is greater than x" : "x is greater than y" // max = "y is greater than x"
let max = (x < y) ? true : false // max = true
let max = (x > y) ? func() : anotherFunc() // max = anotherFunc()
(x < y) ? func() : anotherFunc() // code is running func()

この次のスタック: http://codereview.stackexchange.com はあなたの質問に適しています;)

編集:三項演算子に注意してください

三項演算子をif elseステートメントに置き換えることだけで、ビルド時間は92.9%短縮されました。

https://medium.com/@RobertGummesson/regarding-Swift-build-time-optimizations-fc92cdd91e31#.42uncapwc

63
StrawHara

Swiftでは、次の条件にステートメントが1つしかない場合でも、中括弧を追加する必要があります。

if num == 0 {
  // Do something
}

Swift ifステートメントが機能する場合).

4
Greg

Swift 2.0アップデート方法1:

a != nil ? a! : b

方法2:短縮形の場合

b = a ?? ""

参照: Apple Docs:三項条件演算子

そしてそれは動作します、

u.dob = (userInfo["dob"] as? String) != nil ? (userInfo["dob"] as! String):""

Json文字列が空の場合、空の文字列に置き換えています。

編集:Gerardo Medina`sの提案を追加しています...

u.dob = userInfo["dob"] as? String ?? ""
3
Prachil Tambe

Objective-Cの場合のように、短縮形のifステートメントを使用できます。

num1 < num2 ? DO SOMETHING IF TRUE : DO SOMETHING IF FALSE
3
Jack Chorley

これは、簡略if-else条件と呼ばれます。 SwiftでiOS開発を行っている場合は、このプロパティを使用してUIオブジェクトの動作を操作することもできます。

たとえば-テキストフィールドにテキストがある場合にのみボタンを有効にします。つまり、テキストフィールドの文字数がゼロの場合は無効のままにしてください。

button.enabled = (textField.characters.count > 0) ? true : false

1
Yash Tamakuwala

その非常にシンプルな:in Swift 4

    playButton.currentTitle == "Play" ? startPlay() : stopPlay()

元のコードは

    if playButton.currentTitle == "Play"{
     StartPlay()
    }else{
     StopPlay()
    }
1
user9060380

常にif全体を1行に入れることができます。

if num == 0 { temp = 0 }
0
fuzzygoat