【问题标题】:how to pass n argunment to the method如何将参数传递给方法
【发布时间】:2011-07-18 09:46:19
【问题描述】:

例子

add(int a, int b) 这里我们传递两个参数 int a, int b,

我们可以传递 n 不同数据类型的参数吗,比如 int,float,long, 有可能吗?

我的意思是我只需要编写一个处理 n 个参数的方法。

【问题讨论】:

  • 你想做什么?这个问题太模糊了。
  • 您使用哪种语言?你可能是指泛型:stackoverflow.com/questions/848641/…(关于目标 c 中泛型的 stackoverflow 文章)
  • 对于 iPhone,您使用 Objective-c 进行编程。你在上面写的不是objective-c方法。但是你可以传递 n 个参数。你可以使用一个数组。 ;-) 对不起,我没有时间写一个真正的答案。如果明天没有答案,我会写一个。

标签: iphone


【解决方案1】:

是的,可以将不同数据类型的参数传递给 Objective-C 方法。我假设你说的是 Objective-C,因为这个问题被标记为 iphone。

例如,您可以使用如下方法:

- (void)foo:(int)foo bar:(float)bar baz:(long)baz {
    // ...
}

如果你在谈论 C,你可以有一个函数:

void myfunc(int foo, float bar, long baz) {
    // ...
}

如果你想编写具有可变大小参数列表的函数(因此它可以采用 1 个参数,或 2 个参数,或 3 个,...),我建议你看看这个 blog post which discusses variable argument lists in Objective-C/CocoaApple's technical Q&A on variable argument lists .

【讨论】:

    【解决方案2】:
    - (int)add:(int)number1 to:(int)number2 {
             return number1 + number2;
    }
    

    使用 [obj add:2 to:4] 调用它;其中 obj 是接收添加消息的对象。

    您可以使用上述任何类型的参数来实现您的想法。例如:

    - (void)add:(int)number1 to:(float)number2 {
             //print result here
    }
    

    标准类型转换等适用于任何编程语言。

    如果您谈论的是完全任意数量的参数,请查看 Objective C 中的可变参数函数(Google it)。第一个搜索结果页面中有很多很好的教程。

    【讨论】:

    • 伯恩...感谢重播。某些类型我的对象将消息两个参数或三个参数或十个参数它将是动态的。我的意思是它用两个或三个或十个参数调用 add 方法。所以我需要动态处理方法。有没有可能。。
    • 这正是我在最后两行中提到的。谷歌在目标 C 中的可变参数函数
    • 另见 GregInYEG 回复中的链接
    【解决方案3】:

    一切皆有可能,但我很确定这需要一些严重的黑客攻击才能使其适用于可变数据类型。如果您可以将要求更改为特定数据类型的可变数量,那么您应该看看“Cocoa with Love”的优秀教程:variable-argument-lists-in-cocoa

    【讨论】:

      猜你喜欢
      • 2021-12-13
      • 2012-02-23
      • 2011-07-25
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-09
      相关资源
      最近更新 更多