2012-01-20 2 views
-3

코드를 백분율로 계산하는 기능을 만들고 싶습니다.목표 C 메소드 서명에 해당하는 코드

PHP에서, 그건 :

목표 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

고맙습니다. 여기에 y 글을 올리면 아주 즐겁게 놀랐습니다. 정보를 얻으려면 RestKit으로 Json으로 응용 프로그램을 만들었지 만이 문제가 발생하지 않았습니다. 프로그래밍에 대한 설명서를 읽을 의향이 있지만 사용 환경에 따라 구문이 크게 다를 수 있다고 생각합니다. 이것은 시작에 불과합니다. 나는 이미 좋아. 이 환영 해 주셔서 감사합니다. 알렉스 –

답변

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

필요 없음. http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjectiveC/Introduction/introObjectiveC.html –

1

또한 C 함수와 같이 그것을 할 수 :

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

그리고 당신은 이런 식으로 부를 것이다 : 당신이 매크로에있는 경우,

// 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; 
} 

또는

percent(50, 20); 
+1

매크로를 사용할 수도 있습니다 !!! 1 !!! – Romain

0

Objective-C는 메서드 이름의 일부로 매개 변수 이름을 사용하는 이상한 규칙을 사용하므로 매개 변수 선언이 포함됩니다. 메소드 이름.

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

괄호 안의 첫 번째 유형은 반환 유형을 정의하고 매개 변수는 콜론 뒤에 오며 괄호 안에 유형도 있습니다.

+0

반환 유형은 대괄호가 아니라 괄호 안에 있습니다 ... –

+0

"이상한"대회가 아니며 사람들이 "방법 보유"개념 (OO 언어의 전통과) 사이의 차이를 구체화하기로 결정한 방법입니다. 메시지 수신/처리 가능 "(ObjectiveC가하는 것). 당신은 물론 올바른 RichardJ.RossIII @ – Romain

+0

용어 브래킷의 정상적인 영국의 사용을 사용하여 저를 용서. 당신은 "나는 기능을합니다"라는 문구를 사용하는 영업 이익을보고 할 수 있습니다 – brain