thisアプリケーションでのステートメントがあります:スウィフト特に閉鎖は、構文
var instanceCount = globalHappinessInstanceCount++
Q1。第二のものが達成していない最初の声明は何ですか?
Q2。クロージャ式の後にある中括弧は、空のタプル、イニシャライザ構文、または何を意味していますか?私は最初の声明をどのように読むべきですか?
thisアプリケーションでのステートメントがあります:スウィフト特に閉鎖は、構文
var instanceCount = globalHappinessInstanceCount++
Q1。第二のものが達成していない最初の声明は何ですか?
Q2。クロージャ式の後にある中括弧は、空のタプル、イニシャライザ構文、または何を意味していますか?私は最初の声明をどのように読むべきですか?
Q1。第二のものが達成していない最初の声明は何ですか?それ私の知る限り
だけ
Q2 ...任意の値を追加していない不要なクロージャを作成します。クロージャ式の後にある中括弧は、空のタプル、イニシャライザ構文、または何を意味していますか?私は最初の声明をどのように読むべきですか?
メソッドコールです。ただ、
let foo = { globalHappinessInstanceCount++ }
foo()
のようなアップデート:私はちょうどあなたのリンクにコードを読む
、クラススコープのコンテキストで、それは異なっています。
class HappinessViewController
{
var instanceCount = { globalHappinessInstanceCount++ }()
}
が
globalHappinessInstanceCount++
それはそれほど異なるvar instanceCount = globalHappinessInstanceCount++
スウィフト3におけるしかし
以上であるの値が割り当てられますinstanceCount: Int
プロパティを定義し、++
オペレータが変更する可能性がある、削除されますそれはglobalHappinessInstanceCount += 1
にあります。しかし、問題は+=
の結果のタイプはVoid
の代わりにInt
です。だからあなたはそれを書く必要があります
class HappinessViewController
{
var instanceCount: Int = {
let instanceCount = globalInstanceCount
globalInstanceCount += 1
return instanceCount
}()
}
だからクラスのスコープでさえ、最初のステートメントはまだ不必要なクロージャを使用していますか? –
++が後置されているので、私はdefer {globalHappinessInstanceCount + = 1}する必要があると思います。 –
Swift 3の非推奨++では、Int型指定、遅延ブロック、return文を追加する必要がありました。これは廃止されたオペレータの決定を取り消すよう圧力をかけるのに十分な理由でしょうか? –