gpt4 book ai didi

ruby - 使用 heredoc 作为哈希值

转载 作者:数据小太阳 更新时间:2023-10-29 06:51:27 24 4
gpt4 key购买 nike

我有一个方法 Embed.toggler 接受哈希参数。使用以下代码,我试图在哈希中使用 heredoc。

                Embed.toggler({
title: <<-RUBY
#{entry['time']}
#{entry['group']['who']
#{entry['name']}
RUBY
content: content
})

但是,我得到以下错误跟踪:

syntax error, unexpected ':', expecting tSTRING_DEND
content: content
^
can't find string "RUBY" anywhere before EOF
syntax error, unexpected end-of-input, expecting tSTRING_CONTENT or tSTRING_DBEG or tSTRING_DVAR or tSTRING_END
title: <<-RUBY
^

如何避免出现此错误?

最佳答案

在您的 <<-RUBY 后添加一个逗号:

Embed.toggler({
title: <<-RUBY,
#{entry['time']}
#{entry['group']['who']
#{entry['name']}
RUBY
content: content
})

this does work in general. I am not sure why it wasn't working in my code though.

它不起作用,因为散列要求键/值对用逗号分隔,例如 {title: 'my title', content: 'my content' }而您的代码只是没有逗号。由于繁琐的 HEREDOC 语法,很难看出这一点。

Do you know if there is a way to perform operations on the string?

你这是在玩火。提取变量并对变量本身进行后处理总是更安全(通常更清洁):

title = <<-RUBY
#{entry['time']}
#{entry['group']['who']
#{entry['name']}
RUBY

Embed.toggler(title: title.upcase, content: content)

但是,如果你今天觉得危险,你可以在打开HEREDOC literal后添加操作,就像你添加逗号一样:

Embed.toggler({
title: <<-RUBY.upcase,
#{entry['time']}
#{entry['group']['who']
#{entry['name']}
RUBY
content: content
})

但我不鼓励你这样做,因为它会破坏可读性。

关于ruby - 使用 heredoc 作为哈希值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32938313/

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