gpt4 book ai didi

Ruby HEREDOC 语法解释字符串

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

我想使用 irb 和一个 HTML 页面做一些正则表达式测试,我正试图 gsub 一些东西。

然而,我们都知道和喜爱的 HEREDOC 语法在 Ruby 中似乎有所不同:

irb(main):140:0> text = <<-FUNUNU <p class="firstpara">
irb(main):141:0" FUNUNU
irb(main):142:0*
irb(main):143:0* puts text
SyntaxError: compile error
(irb):140: syntax error, unexpected kCLASS, expecting kDO or '{' or '('
text = <<-FUNUNU <p class="firstpara">
^
(irb):143: syntax error, unexpected tIDENTIFIER, expecting kDO or '{' or '('
from (irb):143
from :0

它似乎在提示字符串的内容,试图解释它。从我能找到的关于 HEREDOC 语法的所有文档中,都指出关键字之间的所有内容都应该是变量的一部分。但似乎并非如此。

除了 HEREDOC 字符串以 HEREDOC 指示符的第二个表达式结尾之外,是否对字符串的内容有格式限制?

最佳答案

不能把字符串放在heredoc定界符的同一行,因为在定界符之后,同一行是允许放Ruby代码的,即

irb> text = <<-FOO # Ruby code allowed here...
irb* <a class="foo">
irb* FOO
# => "<a class=\"foo\">\n"
irb> text
# => "<a class=\"foo\">\n"

这是因为你可以这样写:

irb> instance_eval(<<-CODE)
irb* def foo
irb* "foo"
irb* end
irb* CODE

甚至:

def foo(a, b, c)
[a, b, c]
end

foo(<<-A, <<-B, <<-C)
foo
A
bar
B
baz
C
# => ["foo\n", "bar\n", "baz\n"]

关于Ruby HEREDOC 语法解释字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17088384/

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