我应该总是在ruby方法中返回nil吗?

时间:2017-02-08 20:14:24

标签: ruby

我们知道函数有副作用和/或返回值,并且方法只有副作用。因此,对于性能/内存透视图,最好在ruby方法结束时返回nil

例如,如果我有一个方法可以将哈希添加到现有哈希中,如下所示:

def add_to_config(config)
  config[:alphabet] = {a: 1, b: 2, c: 3}
end

我们知道此方法的返回值是已分配的项,在本例中为字母哈希。现在在这个微不足道的例子中,似乎没什么大不了的。但是当它被分配了一个庞大的复杂数据结构时会发生什么呢?

显式返回nil以防止返回更大的数据结构是否更好?

def add_to_config(config)
  config[:alphabet] = {a: 1, b: 2, c: 3}
  nil
end

还是真的重要吗?由于它可能只是将指针推入堆栈 - 猜测,我不知道红宝石是如何做到的。

1 个答案:

答案 0 :(得分:3)

首先,方法还具有带可选副作用的返回值。更进一步的Ruby只有方法,而不是函数。在模块或类之外定义的一些代码是默认主对象的方法,即Object类。

在只有副作用且没有回报价值的情况下,传统观念是回归自我。这允许方法链接:

obj.method_one(args).method_two(args).method_three(args)

而不是:

obj.method_one(args)
obj.method_two(args)
obj.method_three(args)

虽然是一个小问题,但每个方法始终都可以访问自己,而nil则是对特殊全局对象的引用。这可能会更快,但还不够重要。

上面的源代码仅用于说明目的,并非旨在对源代码格式化发起一场神圣的战争。