公開されているget-only計算されたプロパティを持つプライベートストアドプロパティは、変数をパブリックにするが、セッターをプライベートに保つように設計されたパターンです。あなたはfullname
その後、暗黙的に開封されたようにこれらを定義した場合、
注:これを達成するための、より簡潔な方法は、これらの計算されたプロパティの必要性を排除し、保存されたプロパティのプライベートセッターを指定することです上記のように、計算されたプロパティはそれらを安全にアンラップしたいかもしれません。
や名前が変更できない場合、あなたはイニシャライザによって設定され、決して再び変更される定数であることを、それらを定義することができます:
struct Person {
let firstname: String!
let lastname: String!
var fullname: String {
return "\(firstname ?? "") \(lastname ?? "")"
}
}
全く無関係に、私は私がしたいかわかりませんこの状況で暗黙的にラップされたオプションをアドバイスします。暗黙のうちにアンラップされたオプションの目的は、イニシャライザで設定できなかったプロパティのためですが、一度設定されると決してnil
になりません。
多くの場合、連絡先を扱うときは、nil
のような状況を考えなければなりません。その場合、暗黙的にアンラップされたオプション(例えば、私は!
ではなく?
を使用するかもしれません)にしません。または、もし彼らがnil
になることができなかったら、私はイニシャライザにそれらを設定して、それらをオプションにしないでください。それはすべて、この定義でキャプチャするビジネスルールに依存します。私はあなたがこれらの暗黙的にアンラップされたオプションを作る良い理由があったと仮定しようとしますが、将来の読者のために、暗黙のうちにアンラップされたオプションを気軽に使うことには注意が必要です。
出典
2017-01-07 09:31:01
Rob