我是Ruby的新手,所以如果他们没有任何意义,请提出我的问题。我的问题是,
常量是指定不应更改的值的位置。当我们能够传递尽可能多的参数时,为什么ARGV是常数?参数不是ARGV的值吗?当我们将参数传递给ARGV时,我们是在分配值还是ARGV已经拥有自己的值集?
答案 0 :(得分:3)
关键是ARGV
在程序运行的整个时间跨度内具有常量值。另一个原因是你不应该改变ARGV
的值。来自维基百科页面标题为Constant (computer programming):
[...]常量是一个标识符,其关联值通常不会被程序在执行期间改变 [...]
Ruby有点特殊,因为它允许你重新分配ARGV(与任何其他常量一样),尽管它会发出警告。以下是有效的Ruby代码(但请不要这样做):
ARGV = [123]
# warning: already initialized constant ARGV
p ARGV
# [123]
答案 1 :(得分:3)
常量必须在某个时刻重新赋值。如果你将常量的含义视为永远不会重新赋值的东西,那么根本就没有常数。因此,常数是一个相对概念;如果没有相关的域/范围,您无法定义常量。常量在该域内保持一致,但其值已在范围之外分配/更改。
在数学中,假设一些数学家在他们生命中的某个时刻使用常数A = 3
来解决某个问题。这并不意味着每个人从那时起使用常量A
总是必须假设它的值为3
。在数学中,常数的域可以是单个证明,文章,书籍或整个子域中的约定等。
对于计算机程序,常量的域通常是程序的执行寿命。常量相对于程序的执行保持不变。 ARGV
在执行Ruby程序之前设置了它的值。
答案 2 :(得分:1)
ARGV
是一个在Ruby脚本初始化时定义的常量数组,其中该数组中的值设置为传递给脚本本身的参数。
ARGF是一个设计用于脚本的流,用于处理作为命令行参数提供的文件或通过STDIN传入的文件。
传递给脚本的参数存储在ARGV数组中,每个元素一个参数。 ARGF假定任何不是文件名的参数已从ARGV中删除
有关详细信息,请参阅the documentation for ARGV。