2012-01-20 12 views
-3

%を計算するコードに含める関数を作成します。 PHPで目的Cのメソッドシグネチャと同等のコード

、それはです:Objective Cの中

function percent(a,b){ 
    return a/b*100; 
} 

、私は知りません。私は試しました:

-(void)percent(a,b){ 
    return a/b*100; 
} 

しかし、2つのエラーがあります。私はそれを動作させる方法を説明できますか?パラメータは、メソッドの呼び出しを通じて「ばらまかれる」

- (float)percentWithA:(float)a dividedByB:(float)b 
{ 
    return a/b * 100; 
} 

:あなたは

+5

コードを書くために開始する前に、私は言語の構文について少し読むことをお勧めしたいと思います。 Obj-Cのメソッド構文は異なるので、混乱するのは当然ですが、試したことはObj-Cのメソッド構文についての一行を読んでいないことを示しています。 – taskinoor

+0

「2つのエラーがあります」とは言えません。エラーの内容を記述する必要があります。 – Romain

+0

ありがとうございました。 ここに投稿するのは初めてですが、私はとてもうれしく驚いています。 JsonとRestKitでアプリケーションを作成できましたが、この問題は発生していませんでした。 私はプログラミングのドキュメントを読んでも構わないと思っていますが、使用状況によって構文が大きく異なると思います。これは始まりにすぎない。 私はすでに好きです。 ようこそありがとうございます。 アレックス –

答えて

1

これを行うには、より正確な方法は、次のようになります。

- (float)precentageByDevidingFloat:(float)a byFloat:(float)b { 
    float returnValue = 0; 
    if (b != 0) 
    returnValue = a/b * 100; 

    return returnValue; 

} 

あなたがより正しい命名規則を使用してこの方法で、あなたが実際にケースにフロートし、あなたの安全を返すいくつかのいずれかがBで、あなたに値0を与えました(ドキュメントによってカバーされるべきである)。

+0

'b == 0'なら' NaN'を返すことに興味があります。 – Romain

+0

0をチェックする必要はありません。関数は 'b = 0'の場合は無限大を返し、floatは0で割ったときに整数のように振る舞いません。 –

2

方法が少し異なる構文で定義されているのを助けるためにあなたが使用しているよりも、

ありがとうございました。たとえば、このメソッドの名前は percentWithA:dividedByB:になります。ただし、この呼び出しほど明示的にする必要はありません。

- (float)percent:(float)a :(float)b { /* ... */ } 

をしかし、それは多くのコンテキストを提供していません:たとえば、あなたがこれを行うことができます。

+0

あなたは私を打つ。私を削除します:) –

+0

あなたは何もカバーしていない場合は、あなたの答えを保つために自由に感じてください。 :) –

+0

必要ありません。私はObjCのイントロ・ドキュメントへのポインタを含めましたが、私たちの人は絶対に読む必要があると思います:http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Introduction/introObjectiveC.html –

1

あなたはCの関数で、このようにそれをも行うことができます:

// in your .h 
float percent(float a, float b); 

// in your .m or .c 
float percent(float a, float b) 
{ 
    return a/b * 100.0f; 
} 

それとも、あなたがマクロにしている場合:

// remember to always enclose macros in parentheses 
#define percent(a, b) (a/b * 100.0f) 

そして、あなたはこのようにそれを呼び出します。

percent(50, 20); 
+1

マクロを使用することもできます!!! 1 !!! – Romain

0

Objective-Cは、メソッド名の一部としてパラメータ名を持つという奇妙な規則を使用するため、パラメータ宣言は埋め込まれています。i nメソッド名。

-(float)percentOf:(float)a over:(float)b 
{ 
    return (a/b) * 100.0; 
} 

括弧内の最初の型は戻り値の型を定義し、パラメータはコロンの後に来て、型も括弧で囲みます。

+0

戻り値の型は括弧ではなくカッコで囲まれています。 –

+0

「奇妙な」規約ではありません。「メソッドを持つ」という概念(OO言語がどのような意味を持つのか)と、メッセージを受信/処理することができます "(ObjectiveCの機能) – Romain

+0

@ RichardJ.RossIIIあなたはもちろん正しいですが、英国の正規の用語集を使用してくれたことを私に許してください。 「私は機能を作ってほしい」というフレーズを使ったOPを見たいかもしれません。 – brain