Objective C等价于C方法签名

时间:2012-01-20 16:11:31

标签: objective-c

我想在我的代码中包含一个函数来计算百分比。

在Php中,它是:

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

在目标C中,我不知道。我试过了:

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

但是有2个错误。你能解释一下如何让它发挥作用吗?

谢谢你的帮助

4 个答案:

答案 0 :(得分:2)

方法的定义语法与您习惯的语法略有不同:

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

参数在整个方法调用中“散布”。例如,此方法的名称为percentWithA:dividedByB:。但是,您不需要像此调用一样明确。例如,您可以执行此操作:

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

但它没有提供太多背景信息。

答案 1 :(得分: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);

答案 2 :(得分:1)

更正确的方法是:

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

  return returnValue;

}

这样你就可以使用更正确的命名约定,实际上你会返回一个浮点数和你的保险箱,以防有人在B中给你一个值0。 (应该由文件涵盖)

答案 3 :(得分:0)

Objective-C使用一个奇怪的约定,即将参数名称作为方法名称的一部分,因此参数声明嵌入在方法名称中。

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

括号中的第一个类型定义了返回类型,参数来自冒号,并且它们的类型也在括号中。