gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 18:07:20 25 4
gpt4 key购买 nike

众所周知,函数有副作用和/或返回值,而方法只有副作用。因此,从性能/内存的角度来看,最好在 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

或者这真的很重要吗?因为它可能只是将指针压入堆栈——推测,我不知道 ruby​​ 是如何做到的。

最佳答案

首先,方法也有带有可选副作用的返回值。此外,Ruby 只有方法,没有函数。在模块或类之外定义的一些代码是默认主对象(Object 类)的方法。

在只有副作用而没有返回值的情况下,传统观点是返回 self。这允许链接方法:

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

相对于:

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

虽然是次要点,但每个方法总是可以访问其自身,而 nil 将是对特殊全局对象的引用。这可能会更快,但还不够重要。

上面的源代码仅供说明之用,并非旨在对源代码格式展开圣战。

关于ruby - 我应该总是在 ruby​​ 方法中返回 nil 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42122764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com