温度を使用するコードを書いています。そこで、使用されているスケール (C/F) と値を保持するクラスが必要でした。クラスを不変にしました (実装クラスのカテゴリを使用して)。コンバーターが欲しかった。Java では通常、静的メソッドを実行して新しいインスタンスを返すようにしますが、+ メソッドはクラス メソッドであり、インスタンス プロパティにアクセスできないため、OC ではそれができません。
そこで、現在の Temperature インスタンスと変換先のスケールを取得する init メソッドを実行しました。C++ を長い間やってきたので、これはコピー コンストラクターのようなものです。
ここでの質問は、標準的な方法と見なされるより良い方法または何かがあるかどうかです。したがって、変換を取得するには、次のようにします。
Temperature *freezingF = [[Temperature alloc]initWithScale:Fahrenheit andValue:@32.0];
Temperature *freezingC = [[Temperature alloc]initWith:freezingF andScale:Celsius];
assertThat(freezingC.value, is(@0));
(スクロールを制限するために変数名を短くしました...)