gpt4 book ai didi

ruby - 为什么 ruby 常量是可变的?变量有什么区别?

转载 作者:数据小太阳 更新时间:2023-10-29 08:24:18 24 4
gpt4 key购买 nike

我在学习 ruby​​,我了解到 ruby​​ 常量必须以大写字母开头(例如 Myconstant)。这将使它成为常量,但它的值是可变的!

如果一个常量的值是可变的那么为什么我们需要常量,那么和变量有什​​么区别呢?

最佳答案

常量有词法作用域,而方法有动态作用域:

class Super
Constant = "Super::Constant"

def method
'Super#method'
end

def get_constant
Constant
end

def get_method
method
end
end

class Sub < Super
Constant = 'Sub::Constant'

def method
'Sub#method'
end
end

Super.new.get_constant # => "Super::Constant"
Sub.new.get_constant # => "Super::Constant"

Super.new.get_method # => "Super#method"
Sub.new.get_method # => "Sub#method"

就变量而言,它们无法从外部访问。您打算如何访问这些?

class Object
Constant = 'constant'
local_var = 'local var'
@instance_var = 'instance var'
@@class_var = 'class var' # btw, never use these
end

此外,您可以在 Ruby 中做很多事情,但是为了您自己的理智,请多加小心。我建议不要改变常量,这可能会让您的团队感到沮丧。

关于ruby - 为什么 ruby 常量是可变的?变量有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11642948/

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