我是 Ruby 新手,我想知道如何定义一个范围仅限于函数的常量。
def foo(number)
# I want this to be a constant defined only inside foo
ABC = 123
return number * 123
end
我是 Ruby 新手,我想知道如何定义一个范围仅限于函数的常量。
def foo(number)
# I want this to be a constant defined only inside foo
ABC = 123
return number * 123
end
没有办法做到这一点。上面的代码会dynamic constant assignment
报错,因为没有什么可以保证foo()
只调用一次。无论如何,Ruby 常量并不是真正的常量。您可以重新分配它们,它只会生成警告并愉快地更改值。
Ruby 是一种动态语言,鸭式语言;你通常不应该依赖解析器/解释器来保证你的恒定性。除了使您的声明靠近其使用范围之外,确定常量的范围并没有真正的好处。您可以将其移至更高的范围。另一种可能有意义的选择是将常量包装在类/模块中以命名它们。它与局部常量并不完全相同,但它可能会澄清代码;从你的小例子中很难看出。
你不能这样做,它真的没有任何意义。您的脚本似乎面向函数式编程,因为您在函数内声明了一个常量(这实际上是main
对象的一种方法)。
以更加面向对象的方式思考,您可以在类中定义该常量Object
(将由 继承main
),使其在该类扩展之后的任何地方都可以访问:
class Object
ABC = 123
def foo( number ); return number * ABC; end
end
或者更好的是,如果该特定常量仅在特定类或模块中有意义:
module/class Bar
ABC = 123
def foo( number ); return number * ABC; end
end