我可以在Objective C函数中使用“无参数参数”吗?

时间:2016-12-15 03:34:51

标签: objective-c function

这是一个无参数函数:

- (void) doSomething;

这是假设的函数,带有“无参数参数”:

- (void) convertCelcius:(CGFloat)celcius toFarenheit;

所以我可以这样称呼它:

CGFloat result = [myClass convertCelcius:50.5 toFarenheit];
CGFloat result = [myClass convertCelcius:50.5 toKelvin];
CGFloat result = [myClass convertKelvin:352 toCelcius];

而不是:

CGFloat result = [myClass farenheitFromCelcius:50.5];
CGFloat result = [myClass kelvinFromCelcius:50.5];
CGFloat result = [myClass celciusFromKelvin:352];

这可能吗?感谢。

1 个答案:

答案 0 :(得分:3)

不,Objective-C语法不允许这样做。如果你有第二个关键字,你必须传递一些东西。 Objective-C的创建者Brad Cox解释了为什么here

无论如何,在Cocoa中,如果消息主要用于其返回值,而不是副作用,我们通常会尝试在返回值之后命名该函数 - 名词短语而不是动词短语。因此,fahrenheitFromCelcius:之类的名称无论如何都会更好。

另一方面,您可以按照-[UIView convertPoint:toView:]的示例进行操作。我从未理解为什么UIKit设计师会这样命名。无论如何,这将导致类似:

typedef enum {
    TSKelvin,
    TSCelsius,
    TSFahrenheit
} TemperatureScale;

CGFloat result = [myClass convertDegrees:50.5 from:TSCelsius to:TSFahrenheit];

另请注意,正确的拼写是“华氏度”和“摄氏度”。