2017-04-25 15 views
0

私の問題は以下で説明されています。 TLDR:私のコードでは、計算されたプロパティの値を表すために第3の変数を使用する必要があります。私は2つの変数だけでそれを行う方法があるのだろうかと思います。計算されたプロパティの基礎となる変数| Swift

私はブール値であるfirstNumberと呼ばれる計算されたプロパティを持っています。 その値が変更されるたびに、別の変数isDecimalを変更したいのですが、これはfirstNumberから独立していて、それを変更する方法がたくさんあります。

firstNumberがfalseに設定されている場合は、isDecimalもfalseに設定します。唯一の問題は、ブール値に値があることが必要なため、firstNumberAPIという基本ブール値を作成しました。

これは私がやろうとしていることをするための最良の方法だとは思わない。 isDecimalfirstNumberに変更したときに、firstNumberAPI変数を作成せずに誰かに設定する方法を提案できるのかどうか疑問に思っています。

var isDecimal = false 
var firstNumberAPI = false 

var firstNumber: Bool{ 
    get{ 
     return firstNumberAPI 
    } 
    set{ 
     firstNumberAPI = newValue 
     if newValue==true{ 
      isDecimal = false 
     } 
     else{ 
      isDecimal = true 
     } 
    } 
} 

答えて

3

firstNumberAPI変数は必要ありません。 firstNumberを変更します。

var isDecimal = false 

var firstNumber: Bool { 
    didSet { 
     isDecimal = !firstNumber 
    } 
} 

didSetの詳細についてはThe Swift Programming Language本のProperty Observersセクションを参照してください。

+0

ありがとうございました! 「やったこと」が何であるか説明できますか?私は前にこの構文を見たことがない。 –

+1

@JamesDorfman私の更新を参照してください。 – rmaddy

+0

@LeoDabusもちろん、それは正しくないので、 'var firstNumber:Bool = true {...}'が必要です。 – rmaddy

関連する問題