> "#$" SyntaxError: (irb):3: unterminated string meets end of file from /Users/m-6ren">
gpt4 book ai didi

ruby - 字符串 "#$"和 "#@"的语法错误

转载 作者:数据小太阳 更新时间:2023-10-29 07:23:19 25 4
gpt4 key购买 nike

有人可以向我解释这种行为吗?

>> "#$"
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 的值插入该位置的字符串中。一个鲜为人知的子特性是,如果表达式只是一个全局变量或实例变量,则可以省略大括号。 IE。 #$foo 在双引号字符串中将插入全局变量 $foo 的值,而 #@foo 将对实例变量执行相同操作.

所以你的前两个例子出错了,因为它认为你想分别获取变量 $"@" (后者不是变量名- 尽管第一个是 - 这就是为什么第二个会收到两条错误消息而第一个只有一条错误消息),但字符串未关闭。第三个示例只是简单地为您提供了变量 $$ 的值。

如果您不希望这种情况发生,您可以在 # 前面加一个反斜杠进行转义(或者如果您不需要任何双引号,则只需使用单引号而不是双引号)引用特定的行为)。

这种行为并不是 ruby​​ 1.9 特有的——它一直都是这样。

关于ruby - 字符串 "#$"和 "#@"的语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7260577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com