さて、first_name
プロパティを設定しているとします。だから私はそのセッターと呼ぶ。セッターは、文字列が有効であることを確認します、その後、呼び出します
self.first_name = newValue
これはfirst_name
のセッターを呼び出します。文字列がまだ有効であるので、セッターが呼び出されます:
self.first_name = newValue
これはfirst_name
のセッターを呼び出します。文字列がまだ有効であるので、セッターが呼び出されます:
self.first_name = newValue
これはfirst_name
のセッターを呼び出します。文字列がまだ有効であるので、セッターが呼び出されます:
self.first_name = newValue
これはfirst_name
のセッターを呼び出します。文字列がまだ有効であるので、セッターが呼び出されます:
self.first_name = newValue
これはfirst_name
のセッターを呼び出します。文字列がまだ有効であるので、セッターが呼び出されます:
self.first_name = newValue
これはfirst_name
のセッターを呼び出します。文字列がまだ有効であるので、セッターが呼び出されます:
self.first_name = newValue
これはfirst_name
のセッターを呼び出します。文字列がまだ有効であるので、セッターが呼び出されます:
self.first_name = newValue
これはfirst_name
のセッターを呼び出します。文字列がまだ有効であるので、セッターが呼び出されます:
self.first_name = newValue
これはfirst_name
のセッターを呼び出します。文字列がまだ有効であるので、セッターが呼び出されます:
self.first_name = newValue
これはfirst_name
のセッターを呼び出します。文字列がまだ有効であるので、セッターが呼び出されます:
self.first_name = newValue
これはfirst_name
のセッターを呼び出します。文字列がまだ有効であるので、セッターが呼び出されます:
self.first_name = newValue
これはfirst_name
のセッターを呼び出します。文字列がまだ有効であるので、セッターが呼び出されます:
self.first_name = newValue
これはfirst_name
のセッターを呼び出します。文字列がまだ有効であるので、セッターが呼び出されます:
self.first_name = newValue
これはfirst_name
のセッターを呼び出します。文字列がまだ有効であるので、セッターが呼び出されます:
self.first_name = newValue
これはfirst_name
のセッターを呼び出します。文字列がまだ有効であるので、セッターが呼び出されます:
self.first_name = newValue
これはfirst_name
のセッターを呼び出します。文字列がまだ有効であるので、セッターが呼び出されます:
self.first_name = newValue
これはfirst_name
のセッターを呼び出します。文字列がまだ有効であるので、セッターが呼び出されます:
self.first_name = newValue
これはfirst_name
のセッターを呼び出します。文字列がまだ有効であるので、セッターが呼び出されます:
self.first_name = newValue
これはfirst_name
のセッターを呼び出します。文字列がまだ有効であるので、セッターが呼び出されます:
self.first_name = newValue
これはfirst_name
のセッターを呼び出します。文字列がまだ有効であるので、セッターが呼び出されます:
self.first_name = newValue
これはfirst_name
のセッターを呼び出します。文字列がまだ有効であるので、セッターが呼び出されます:
self.first_name = newValue
これはfirst_name
のセッターを呼び出します。文字列がまだ有効であるので、セッターが呼び出されます:
self.first_name = newValue
これはfirst_name
のセッターを呼び出します。文字列はまだ有効なので、セッターは次の呼び出しを行います。
self.first_name = newValue
これまでのところ、問題があります。あまりにも多くの再帰のためにプログラムがクラッシュするまで、これは永遠に続くでしょう。ゲッターとセッターはこのように自分自身を呼ぶことはできません。代わりに、別のprivate var _first_name
プロパティを作成し、first_name
のゲッターとセッターにアクセスさせてください。
"これは私にエラーを与えますが、この例では"何のエラー? – Larme
最初の例では、ゲッターとセッターを持つ*計算されたプロパティ*が再帰的に呼び出されます* ... –
クラスの代わりに構造体を使用し、失敗可能なイニシャライザを作成する必要があります。 'struct Person { let name:String; init?(name:String){ ガード名.rangeOfCharacter(from:.decimalDigits)== nil else {return nil}; self.name = name } } ' –