【问题标题】:why is the output of $1 and $s or $/ will defferences为什么 $1 和 $s 或 $/ 的输出会有差异
【发布时间】:2021-10-17 22:06:11
【问题描述】:

我是 ruby​​ 的初学者,直到阅读了 the well-grounded 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"

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

【问题讨论】:

  • 一些像$2这样的全局变量是只读的——尝试分配它们会引发SyntaxError。关于返回值:puts 返回 nilp 返回其参数。这就是这些方法的工作原理,它与全局变量无关。
  • @spickermann 非常感谢
  • 非常感谢 stefan 先生 @Stefan

标签: ruby ruby-on-rails-4 rubygems


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    • 2018-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-05
    • 2014-11-10
    相关资源
    最近更新 更多