2016-12-15 80 views
1

这是一个无参数功能:我可以在Objective C函数中使用“无参数参数”吗?

- (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]; 

这可能吗?谢谢。

+0

@ p4sh4也许它是重复的,但答案显示了我以前从未想过的事情,并且没有出现在重复内容中。 –

回答

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]; 

还要注意正确的拼写是“飞轮海”和“摄氏度”。

+0

这是一个完美的解决方法。谢谢! –

相关问题