2016-06-28 6 views
-2

複数の式をスウィフトで書くことはいつ可能ですか?スウィフトでの複数行式

これまでのところ、複数行にわたるプロパティチェーンの問題が発生しました。それはあなたが入力した(または改行文字を追加)を押すことなく次の行に拡張する場合

// is it possible to write this statement over multilines, can you split after or before a dot? 
return self.anObject.varx(a: true, b: false).vary.varz.veryLongVariableName 
+0

分割は、ドットの前の行が可能でなければなりません。問題を示す_self-contained_例を提供できますか? –

+0

私は悪いです、私は演算子の後に分割することに慣れています。 LINQクエリと同様です。ドットの前に分かれて見える、悪い。 – BARJ

答えて

2

ドットの前に改行してください。私はこの種のコードを毎日他の言語で書いています。

class Foo { 
    var bar: Foo { 
     return self 
    } 

    var veryLongNameVariable: Foo { 
     return self 
    } 

    func method(i: Int, _: Int) -> Foo { 
     return self 
    } 
} 

let f = Foo() 
let f2 = f 
    .bar 
    .method(3, 4) 
    .bar 
    .bar 
    .method(0, 2) 
    .veryLongNameVariable 
    .veryLongNameVariable 

print(f2) 
1

コメントは複数行にすることができます。

実際のコードで改行する最も簡単な場所は、コンマで区切られた文の間の角かっこの中にあります。ステートメントは実際にコードを変更することでさらに分かれることがありますが、それ以外のものはまったく気にしません。

多くの場合、letステートメントを分割して読みやすくするような文の一部にletステートメントを使用することをお勧めします。

あなたが実際に実行している問題は、実際には計算が難しいという警告を受け取るのに十分な時間がない限り、複数の行とは何の関係もありません。その警告は、コードをより多くの部分に分けるだけで常に修正することができました。とにかく200文字の1行が欲しい人は誰ですか?

let object = self.anObject 
let varx = object(a: true, 
    b: false) 
let vary = varx.vary 
let varz = vary.varz 
let longName = varz.veryLongVariableName 
return longName 
+0

これは私が正確に読みやすさに関して質問した理由です。 80列の定規を設定してください。プロパティを複数の行にまたがって連結できるかどうかは不思議でした。しかし、let文を分割するのは良い解決策ではありません。ありがとう。 – BARJ

+0

varx宣言の新しい行を含め、それを分割します。私はそのようにすべてのオブジェクトプロパティを連結しません。私が想定している最も読みやすいと感じる程度にそれをしてください。いくつかのものは、それらを分割するための基準についての基準を持っていますが、結局あなたまたはあなたのチームの好みすべてです。 – Sethmr

1

式を分割することができます。あなたが同じ行にドットを置く場合

let s = "" 
s.capitalizedString 
    .capitalizedString 
    .capitalizedString 
    .capitalizedString 
    .capitalizedString 
    .capitalizedString 
    .capitalizedString 
    .capitalizedString 
    .capitalizedString 
    .capitalizedString 
    .capitalizedString 

、それがコンパイルされません:あなたは複数行に渡ってexpressionを分割

常に新しい行にドットを置くことを忘れないでください

var s = "" 
s.capitalizedString. 
    capitalizedString. 
    capitalizedString. 
    capitalizedString. 
    capitalizedString. 
    capitalizedString. 
    capitalizedString. 
    capitalizedString. 
    capitalizedString. 
    capitalizedString. 
    capitalizedString 

あなたがすることができるもう一つは、Xcodeで行の折り返しをオンにすることです:

enter image description here

それは次のようになります。

enter image description here

関連する問題