2016-12-15 14 views
1

これは、パラメータなしの関数である:だから私はこのようにそれを呼び出すことができますObjective C関数で「パラメータなしのパラメータ」を使用できますか?

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

- (void) doSomething; 

これは、 "パラメータなしのパラメータ" と仮に機能です代わりに:

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

これは可能ですか?ありがとう。

+0

@ p4sh4多分それは重複ですが、私が前に考えなかった何かの答えが表示され、重複したところには表示されませんでした。 –

答えて

3

いいえ、Objective-C構文では許可されていません。 2番目のキーワードがある場合は、そこに何かを渡す必要があります。 Objective-Cの作成者であるBrad Coxは、なぜhereを説明します。

とにかく、メッセージが副作用ではなく返り値として使用されることが主に意図されている場合は、返された値の後に関数の名前をつけようとします。これは動詞句ではなく名詞句です。とにかくfahrenheitFromCelcius:のような名前はとにかく優れています。

一方、-[UIView convertPoint:toView:]の例に従うことができます。私はUIKitのデザイナーがこのように名前を付けた理由を理解したことがありません。正しいスペルは「華氏」と「摂氏」であることも

typedef enum { 
    TSKelvin, 
    TSCelsius, 
    TSFahrenheit 
} TemperatureScale; 

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

注:とにかく、それは何かのようにつながります。

+0

これは完全な回避策です。ありがとう! –

関連する問題