当前位置:  开发笔记 > 编程语言 > 正文

从函数返回多个值

如何解决《从函数返回多个值》经验,为你挑选了1个好方法。

嘿,所以我正在制作iPhone应用程序,并且有一个需要调用的常用功能.所以我把它放在它自己的文件中并进行设置,将参数传递给它以及所有这些.但是,我不确定如何最好地从函数返回值.我读过尝试返回数组中的值,但我不知道该怎么做.

int EndOfTurn(int varTurns, int varFatness)
    {
        varTurns--;

        if (varTurns <= 0) {
            varFatness = varFatness - 5;
        }
        else {
            varFatness += 2;
        }
}

我需要返回varTurns和varFatness.但是,这个函数会变得更复杂,我会返回多达10个变量.

截至目前,它是用C语言编写的,而不是Objective-C,(我刚刚在项目中添加了一个.c文件),但我可以改变它.它需要简单地返回我在函数中使用的所有更新值.如果可以的话,写下函数的声明和类型:

TYPE_HERE EndOfTurn(int varTurns, int varFatness)

所以我确切知道该怎么做.谢谢,我希望我提供了足够的信息!



1> Sixten Otto..:

您在Objective-C中的选项与传统C中的选项基本相同:

    使用参考参数,或

    返回某种数据结构(结构,类实例),它封装了您想要返回的值集合.

例如:

void EndOfTurn(int* varTurns, int* varFatness) { ... }

要么

typedef struct { int turns, int fatness } ReturnType;

ReturnType EndOfTurn(int varTurns, int varFatness) {
  ReturnType foo;
  foo.turns = varTurns-1;

  if (foo.turns <= 0) {
    foo.fatness = varFatness - 5;
  }
  else {
    foo.fatness = varFatness + 2;
  }
  return foo;
}

要么

typedef struct { int turns, int fatness } ReturnType;

void EndOfTurn( ReturnType* param ) {
  param->turns--;

  if (param->turns <= 0) {
    param->fatness -= 5;
  }
  else {
    param->fatness += 2;
  }
}

我建议你找一个关于C指针的好教程(也许是这一个或这个?)并花一些时间阅读它.这些概念也适用于Objective-C,对于两种语言的工作原理都非常重要.它有点超出Stack Overflow答案的范围,你真的需要对它们感到满意.

推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有