我正在编写一些使用温度的代码。所以我想要一个可以容纳正在使用的比例(C/F)和值的类。我使类不可变(通过在实现类中使用类别)。我想要一个转换器。在 Java 中,我们通常会做一个静态方法并让它返回一个新实例,但在 OC 中你不能这样做,因为 + 方法是类方法并且无权访问实例属性。
所以我做了一个 init 方法,它采用当前的温度实例和我们希望它转换成的比例。做C++很久了,这就像是一个拷贝构造函数。
这里的问题是是否有更好的方法或被认为是标准做法的东西。因此,要获得转换,您将执行以下操作:
Temperature *freezingF = [[Temperature alloc]initWithScale:Fahrenheit andValue:@32.0];
Temperature *freezingC = [[Temperature alloc]initWith:freezingF andScale:Celsius];
assertThat(freezingC.value, is(@0));
(缩短变量名称以限制滚动...)