我是Ruby的新手,所以请耐心等待我的问题,以防他们可能没有任何意义。我的问题是,Ruby中的ARGV:常量的意义
常量是我们分配不应该改变的值。为什么ARGV是一个常量,当我们可以传递尽可能多的参数的时候,我们想要的就是这样呢?这些论据不是ARGV的价值吗?当我们将参数传递给ARGV时,我们是分配值还是ARGV已经拥有自己的一组值?
我是Ruby的新手,所以请耐心等待我的问题,以防他们可能没有任何意义。我的问题是,Ruby中的ARGV:常量的意义
常量是我们分配不应该改变的值。为什么ARGV是一个常量,当我们可以传递尽可能多的参数的时候,我们想要的就是这样呢?这些论据不是ARGV的价值吗?当我们将参数传递给ARGV时,我们是分配值还是ARGV已经拥有自己的一组值?
一个常数必须在某个时刻新分配它的值。如果你将不变的含义看作是从未新赋值的东西,那么根本就不会有任何常数。因此,常数是一个相对的概念;没有相关的领域/范围,你无法定义一个常数。在该领域内,一个常数保持一致,但其价值在范围之外分配/改变。
在数学中,假设一些数学家在他们一生中的某个时刻使用了一个常量A = 3
来解决某个问题。这并不意味着使用常量A
之后的所有人都必须假定其值为3
。在数学中,常量的域可以是整个子域中的单个证明,文章,书籍或约定等。
对于计算机程序,常量的域通常是一个常量的执行寿命程序。相对于程序的执行常数保持不变。 ARGV
在执行Ruby程序之前设置了其值。
问题是ARGV
对于程序运行的整个时间范围都有固定值。另一个原因是你不应该改变ARGV
的值。从维基百科页面标题Constant (computer programming):
[...]的常数是一个标识符,其相关联的值通常不能由程序其执行期间改变[...]
Ruby是有点特殊因为它允许你重新分配ARGV(与其他常量一样),尽管它会发出警告。以下是有效的Ruby代码(但请不要这样做):
ARGV = [123]
# warning: already initialized constant ARGV
p ARGV
# [123]
谢谢你的帮助!我现在明白了一点。 – NikitaShrestha 2014-11-03 16:42:38
ARGV
是一个Ruby脚本的初始化定义的常量数组,其中该数组中的值设置为参数它们被传递到脚本本身。
ARGF是在这个过程中给定为命令行参数或经由STDIN传递文件中的脚本设计用于流。
传递给脚本的参数存储在ARGV数组中,每个元素一个参数。 ARGF假定不属于任何文件名参数已经从ARGV
去除见the documentation for ARGV了解更多详情。
谢谢!文档确实有帮助! – NikitaShrestha 2014-11-03 16:42:19
谢谢你的回答!我现在更清楚地理解这个概念! – NikitaShrestha 2014-11-03 16:43:44