1
私は迅速に習得しようとしていますが、クロージャが掛かっていましたが、依然として質問する質問があり、インターネット上で回答が見つからず、ここで尋ねるのが適切ですが、私は本当にこれに関する答えが必要です。 クロージャ機能とファンクションの違い
はどこでクロージャを使用する必要があり、我々は、私がfCheckGenderの違いとcCheckGenderとを知っていただきたいと思い
var myHuman:Human = Human()
myHuman.gender = "M"
myHuman.MyCheckGender()
次のクラス
class Human{
var gender:String?
private func fCheckGender(pGender:String?){
guard pGender != nil else {
print("Gender not specified")
return
}
if pGender == "M"{
print("Male")
}
else if pGender == "F"{
print("Female")
}
else{
print("gender Unknown")
}
}
private func cCheckGender(pGender:@autoclosure()->(String?)){
guard pGender() != nil else {
print("Gender not specified")
return
}
if pGender() == "M"{
print("Male")
}
else if pGender() == "F"{
print("Female")
}
else{
print("gender Unknown")
}
}
func MyCheckGender(){
fCheckGender(pGender: gender)
cCheckGender(pGender: gender)
}
}を持っていると言う
ありがとうございます!
P.S私は意図的にvoid-> Stringを使用しました。()->(String?)
このシナリオの違いを知りたいだけです。私は私の悪い英語
から閉鎖、その後、自動閉鎖についてお読みくださいを指摘したように、あなたが値を取得するだけでクロージャを使用し、その値を持つ最初のバージョンパラメータが確実に優れているためです。クロージャは、異なるコードを実行できる関数を使用する場合に、パラメータとして最も頻繁に使用されます。したがって、コンテナで呼び出すことができ、指定したコードを実行できるように、mapやreduceのような関数を考えてください。 – Gerriet
言語ガイドの[autoclosures]セクション(https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Closures.html#//apple_ref/doc/)を読んでおくことをお勧めします。 uid/TP40014097-CH11-ID543)。 – Hamish
"closure"は私には "エンクロージャー"なので、クロージャーは渡され、読み込みや解析が可能なデータの代わりに実行可能なコードの束ねられたパッケージです。 –