gpt4 book ai didi

ruby - 为什么 String.tap 不返回修改后的字符串?

转载 作者:行者123 更新时间:2023-12-04 23:07:18 25 4
gpt4 key购买 nike

我在做

String.new.tap do |string|
polygon.points.each do |point|
x, y = point.x + (page_padding/2), point.y + (page_padding/2)
string += "#{x}, #{y} "
end
end

但它返回一个空字符串。

如果我打电话

Array.new.tap do |array|
polygon.points.each do |point|
x, y = point.x + (page_padding/2), point.y + (page_padding/2)
array << "#{x}, #{y} "
end
end

它返回一个修改后的数组。为什么这不适用于字符串?

使用 ruby 2.4.0

最佳答案

+=不是突变子:str1 += str2创建一个新字符串。使用 <<改变字符串:

string1 = 'foo'
string1.object_id
=> 70298699576220
(string1 += '2').object_id # changed
=> 70298695972240
(string1 << '2').object_id # not changed: original object has been mutated
=> 70298695972240

tap只是将自己交给 block ,然后返回自己。自 self在您的实例中不会发生变化,点击只会返回原始值。

关于ruby - 为什么 String.tap 不返回修改后的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42586200/

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