【发布时间】:2021-10-17 22:06:11
【问题描述】:
我是 ruby 的初学者,直到阅读了 the well-grounded rubyist 在全局变量部分,我使用了全局变量 ($1),但是当我运行它时,我得到了这个错误
>> $2
=> nil
>> $2 = 2
Traceback (most recent call last):
3: from /usr/bin/irb:23:in `<main>'
2: from /usr/bin/irb:23:in `load'
1: from /usr/lib/ruby/gems/2.7.0/gems/irb-1.2.3/exe/irb:11:in `<top (required)>'
SyntaxError ((irb):14: Can't set variable $2)
我尝试创建另一个具有不同名称的变量是正确的
>> $s = "string"
>> puts $s
string
=> nil
当我尝试另一个变量 ($/) 并打印它时,我没有得到特殊值 nil
>> $/ = "h"
>> p $/
"h"
=> "h"
为什么所有示例都是不同的,即使它们都是全局变量?
【问题讨论】:
-
一些像
$2这样的全局变量是只读的——尝试分配它们会引发SyntaxError。关于返回值:puts返回nil和p返回其参数。这就是这些方法的工作原理,它与全局变量无关。 -
@spickermann 非常感谢
-
非常感谢 stefan 先生 @Stefan
标签: ruby ruby-on-rails-4 rubygems