エンティティのインスタンスを初期化すると、エラーVariable used within its own initial value
が発生します。
エラーをスローするコードは次のとおりです。
class func buildWordDefinition (Word:String, language:Language, root:TBXMLElement) -> WordDefinition
{
let Word = WordDefinition(Word: Word, language: language)
エラーはWord
変数を指します。
WordDefinitionクラスは次のとおりです。
class WordDefinition {
let Word: String
let language: Language
init(Word: String, language:Language)
{
self.Word = Word
self.language = language
}
}
このエラーはどういう意味ですか?
Word
という名前の定数を宣言し、同じ名前の引数を使用して初期化しようとしています。コンパイラーは、引数を使用する代わりに、宣言したばかりの定数を使用して独自の初期値を割り当てようとします。
関数内のパラメーターと同じ名前を持つ定数Word
を再定義しています
class func buildWordDefinition (Word:String, language:Language, root:TBXMLElement) -> WordDefinition
{
// same name as the parameter here
let Word = WordDefinition(Word: Word, language: language)
}
スコープにWord
という関数パラメーターがあり、同じ名前の定数を作成しようとしています。定数にWord
以外の名前を付けます。