gpt4 book ai didi

ruby - 意外的 tINTEGER,期待 $end

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

我正在学习 ruby​​,无法弄清楚这里的问题是什么。

formatter = "%s %s %s %s"                                                       
puts formatter = % [1, 2, 3, 4]

结果:

ex8.rb:3: syntax error, unexpected tINTEGER, expecting $end
puts formatter = % [1, 2, 3, 4]
^

最佳答案

你要么 a) 不需要 = 符号:

formatter = "%s %s %s %s"
puts formatter % [1, 2, 3, 4]

b)需要将结果分配给不同的formatter:

formatter = "%s %s %s %s"
puts formatter = formatter % [1, 2, 3, 4]

formatter = "%s %s %s %s"
formatter = formatter % [1, 2, 3, 4]
puts formatter

b 的前一个答案会将结果分配给 formatter,然后输出该分配的结果,这将是右侧。我推荐后者(您当然可以将前两行压缩成一行)只是因为它更清晰。

编辑:
此外,如果您检查 the code in Learn Ruby the Hard Way ,他们不会将任何内容重新分配给 formatter。关键是您可以通过 formatter % 提供任何四项数组,它将生成这四项的文本内容。我看到它只是深入了解 Ruby 方法(您可能不熟悉 printf ),但以下是等效的:

puts formatter % [1, 2, 3, 4]
puts formatter.%([1, 2, 3, 4])

# And the very retro
puts sprintf(formatter, 1, 2, 3, 4)

换句话说,虽然运算符有一些细微差别——只是一些糖分,您实际上可以使用诸如 %= 之类的东西来分配结果,而您不需要 . 将对象与其方法分开——这些只是方法。你可以look up % in Ruby's documentation与任何其他方法一样。

关于ruby - 意外的 tINTEGER,期待 $end,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9124287/

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