2012-01-20 25 views
-3

我想让函数在我的代码中包含以计算百分比。C方法签名的目标C等价物

在PHP中,它是:

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

在Objective C,我不知道。我试过了:

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

但是有2个错误。你能解释一下如何使它工作吗?

谢谢你的帮助

+5

在开始编写代码之前,我想推荐阅读一点关于该语言的语法。 Obj-C方法的语法是不同的,所以很容易混淆,但是你已经尝试过的方式表明你没有阅读关于Obj-C中方法语法的一行。 – taskinoor

+0

说“有2个错误”是不够的。你需要说明他们是哪些错误。 – Romain

+0

谢谢。 这是y的第一次发布在这里,我非常惊喜。 有关信息,我设法使用RestKit与Json创建应用程序,但我没有遇到此问题。 我很乐意阅读有关编程的文档,但我认为在使用情况下,其语法可能会有很大差异。这仅仅是个开始。 我喜欢。 谢谢你的欢迎。 Alex –

回答

1

做的比较正确的做法,这将是:

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

    return returnValue; 

} 

您使用更正确的命名约定通过这种方式,你实际上返回浮点并且如果您的安全有些人给你0值B中 (应该由文档覆盖)

+0

如果'b == 0',可能有兴趣返回'NaN'。 – Romain

+0

您不必检查0,如果'b = 0',函数将返回无穷大,当被0除时,浮点数的行为不像整数。 –

2

的方法是在稍微不同的语法定义比你习惯:

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

的参数“散落”在整个方法调用。例如,这个方法的名字是percentWithA:dividedByB:。但是,您不需要像这次调用一样明确。例如,您可以此:

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

但它并没有提供太多的上下文。

+0

你打败了我。将删除我的:) –

+0

如果你涵盖了我没有的任何东西,随时保持你的答案。 :) –

+0

没有必要。我只是包含一个指向ObjC intro doc的指针,我认为我们的人肯定需要阅读: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使用一个奇怪的惯例,将参数名称作为方法名称的一部分,因此参数声明是嵌入的n方法名称。

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

括号中的第一种类型定义了返回类型,参数来冒号后也有自己的括号类型。

+0

返回类型在括号中,而不是括号...... –

+0

这不是一个“奇怪的”约定,它是人们如何决定实现“有一个方法”的概念(传统OO语言所做的)和“存在能够接收/处理消息“(ObjectiveC的功能)。 – Romain

+0

@ RichardJ.RossIII你当然是对的,原谅我使用正常的英国使用术语括号。你可能想看看使用了“我想做一个功能”这个短语的OP – brain

相关问题