首页 > 解决方案 > 为什么 $1 和 $s 或 $/ 的输出会有差异

问题描述

我是 ruby​​ 的初学者,直到阅读有充分基础的 ruby​​ist的书在全局变量部分我使用了全局变量($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"

为什么所有示例都是不同的,即使它们都是全局变量?

标签: rubyruby-on-rails-4rubygems

解决方案


正如@stefan 和@spickermann 所说,这些是预定义的全局变量。除此之外,请阅读此链接https://www.tutorialspoint.com/ruby/ruby_predefined_variables.htm。这会很有帮助。


推荐阅读