首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有函数的编程实践

具有函数的编程实践
EN

Stack Overflow用户
提问于 2011-08-22 18:09:15
回答 5查看 315关注 0票数 8

我有一个函数返回一个整数,但是我想对它进行扩展以添加一个新的param。但是,使用这个参数,函数必须返回一个数组

  • 是否有一个基于param?
  • 返回数组或整数的函数,如果是这样,我如何解决这个问题?

我认为这是不好的做法,也只是复制粘贴整个功能4-5多行。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-08-22 18:18:21

如果可能的话,我会从另一个函数中调用一个函数。

代码语言:javascript
复制
function getSingle($arg)
{
    // Do whatever it is your function should do...
    return 1;
}

function getMultiple($args)
{
    $out = array();
    foreach ($args as $arg) {
        $out[] = getSingle($arg);
    }

    return $out;
}

对于您所想到的函数,可能不可能这样做,但它可能是一个很好的选择。

另外,由于函数是相互关联的,我会将它们写成类方法,以便将它们“分组”在一起。

Users为例,我可能需要一个函数来获得单个用户,另一个函数可以获得多个用户。在一个类中收集这些方法是有意义的:

代码语言:javascript
复制
class Users
{
    public function getUser($id){}

    public function getUsers(array $id = null){}
}
票数 6
EN

Stack Overflow用户

发布于 2011-08-22 18:17:35

在我看来,这是一个错误的实践,因为它可能会导致使用它的问题,因为您并不总是知道从函数中得到int或数组。

我的建议

总是返回一个数组(即使它是一个项目长),并有一个更通用的外观功能,这是容易处理的。

票数 2
EN

Stack Overflow用户

发布于 2011-08-22 18:18:31

在PHP中,我会说“一个函数一种输出类型”。( FALSE值除外,它在PHP中具有特殊意义)。如果PHP支持重载,这可能是不同的,但它没有。但是这里有一个问题,为什么不简单地有一个这两个函数包装的函数呢?

代码语言:javascript
复制
 function my_wrapped_function($param1, array $param2)
 {
     return $param1 * count($param2);
 }

 function get_array_from_wrapped( $param1, array $param2 )
 {
     return array( $param1, my_wrapped_function($param1, $param2));
 }
 function get_int_from_wrapped( $param1, array $param2 )
 {
     return my_wrapped_function($param1, $param2);
 }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7151642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档