加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 字符串“#$”和“#@”的SyntaxError

发布时间:2020-12-17 03:59:22 所属栏目:百科 来源:网络整理
导读:有人可以向我解释这种行为吗? "#$"SyntaxError: (irb):3: unterminated string meets end of file from /Users/milan/.rvm/rubies/ruby-1.9.2-head/bin/irb:16:in `main' "#@"SyntaxError: (irb):4: syntax error,unexpected $undefined(irb):4: unterminat
有人可以向我解释这种行为吗?

>> "#$"
SyntaxError: (irb):3: unterminated string meets end of file
    from /Users/milan/.rvm/rubies/ruby-1.9.2-head/bin/irb:16:in `<main>'

>> "#@"
SyntaxError: (irb):4: syntax error,unexpected $undefined
(irb):4: unterminated string meets end of file
    from /Users/milan/.rvm/rubies/ruby-1.9.2-head/bin/irb:16:in `<main>'

>> "#$$"
"10994"

我错过了1.9.2的一些新功能吗?困惑.

解决方法

您可能知道可以在双引号值内使用#{expression}将expression的值插入该位置的字符串中.一个鲜为人知的子特征是,如果表达式只是全局变量或实例变量,则可以省略大括号.即双引号字符串中的#$foo将插入全局变量$foo的值,#@ foo将对实例变量执行相同操作.

所以你的前两个例子出错了,因为它认为你想分别得到变量$“或@”(后者不是变量名 – 虽然第一个是 – 这就是为什么你得到两个错误信息的原因第二个,第一个只有一个),保持字符串不闭合.第三个例子只是给你变量$$的值.

如果你不希望发生这种情况,你可以在前面用反斜杠转义#(如果你不需要任何双引号特定的行为,只需使用单引号而不是双引号).

这种行为并不特定于ruby 1.9 – 它一直都是这样的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读