gpt4 book ai didi

ruby - ruby 中带哈希的字符串插值

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

我的目标是用散列中的值替换字符串中的键。我是这样做的:

"hello %{name}, today is %{day}" % {name: "Tim", day: "Monday"}

如果字符串中的键在散列中丢失:

"hello %{name}, today is %{day}" % {name: "Tim", city: "Lahore"}

然后它会抛出一个错误。

KeyError: key{day} not found

预期结果应该是:

"hello Tim, today is %{day}" or "hello Tim, today is "

有人可以指导我只替换匹配的键而不抛出任何错误吗?

最佳答案

从 Ruby 2.3 开始,%遵守通过 default= 设置的默认值:

hash = {name: 'Tim', city: 'Lahore'}
hash.default = ''

'hello %{name}, today is %{day}' % hash
#=> "hello Tim, today is "

或通过 default_proc= 设置的动态默认值:

hash = {name: 'Tim', city: 'Lahore'}
hash.default_proc = proc { |h, k| "%{#{k}}" }

'hello %{name}, today is %{day}' % hash
#=> "hello Tim, today is %{day}"

请注意,只有缺少的 key ,即 :day传递给 proc。因此不知道您是否使用 %{day}%<day>s在您的格式字符串中,这可能会导致不同的输出:

'hello %{name}, today is %<day>s' % hash
#=> "hello Tim, today is %{day}"

关于ruby - ruby 中带哈希的字符串插值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45835934/

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