Ruby常量是什么意思?

bry*_*sai 5 ruby constants

Ruby常量究竟意味着什么?以下代码未显示任何"常量"属性.警告就在那里,但我仍然要改变A指的是什么.

A = 1
puts A # => 1
A = 2  # warning: already initialized constant A
puts A # => 2
Run Code Online (Sandbox Code Playgroud)

或者Ruby常量只是一个没有任何执行的指示?

Pab*_*dez 14

这是正确的,常量就像ruby中的变量一样,但是如果你改变它们就会收到警告.

此外,仅仅存在变量的一个区别:即使它们是在另一个类或模块中定义的,您也可以访问常量,例如,给定此片段:

module Constants
  PI = 3,1415
  other = "variable"
end
Run Code Online (Sandbox Code Playgroud)

你可以PI做到Constants::PI虽然Constants::other不起作用.


Spl*_*lat 8

是的,除了打印该警告之外,不会强制执行Ruby常量.