加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 全局变量与常量与全局缓存的类实例变量

发布时间:2020-12-17 02:36:09 所属栏目:百科 来源:网络整理
导读:通常哪个更适合全局缓存:全局变量,常量或类实例变量? 以下是每个例子: module Foo $FOO_CACHE = {} def self.access_to_cache $FOO_CACHE endendmodule Foo CACHE = {} def self.access_to_cache CACHE endendmodule Foo @cache = {} def self.access_to_
通常哪个更适合全局缓存:全局变量,常量或类实例变量?

以下是每个例子:

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没有强制执行常量不能改变,但这并不意味着你应该这样做.他们被称为常数是有原因的.>类实例变量:是的…因为它是唯一有意义的(虽然名称可能没有,但从技术上来说这是一个模块实例变量,但那是相当迂腐的).这是三者中唯一一个既具有语义意义又需要修改并且由某个范围封装的内容.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读