gpt4 book ai didi

ruby - 全局变量 vs. 常量 vs. 全局缓存的类实例变量

转载 作者:数据小太阳 更新时间:2023-10-29 07:30:45 26 4
gpt4 key购买 nike

一般来说,哪个更适合全局缓存:全局变量、常量或类实例变量?

下面是每个例子:

module Foo
$FOO_CACHE = {}
def self.access_to_cache
$FOO_CACHE
end
end

module Foo
CACHE = {}
def self.access_to_cache
CACHE
end
end

module Foo
@cache = {}
def self.access_to_cache
@cache
end
end

最佳答案

这最终是相当主观的,但我将逐一解决每个选项:

  • 全局变量:没有 ...因为将全局变量放在模块(或类,或任何与此相关的东西)中没有多大意义,无论如何它都会在范围内。此外,如果您可以使用全局变量以外的其他东西,您应该始终这样做。

  • 常量: ...因为缓存不是常量!虽然 Ruby 没有强制常量不能更改,但这并不意味着您应该这样做。它们被称为常量是有原因的。

  • 类实例变量: ...因为它是这里唯一有意义的(尽管名称可能没有意义,从技术上讲,它是一个模块实例变量,但这是相当迂腐的)。这是三者中唯一一个既具有语义意义的修改又被某个范围封装的。

关于ruby - 全局变量 vs. 常量 vs. 全局缓存的类实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10778947/

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