使用Twitter gem并传入数组时出现此错误。
我的代码看起来很无辜 - 想知道造成这种情况的原因是什么?
def twitter_get_users(client, user_names=[])
copy=Array.new(user_names)
users = client.users(user_names)
end
TypeError: can't modify frozen string
from gems/twitter-1.0.0/lib/twitter/client/utils.rb:10:in `gsub!'
from /gems/twitter-1.0.0/lib/twitter/client/utils.rb:10:in `clean_screen_name!'
from /gems/twitter-1.0.0/lib/twitter/client/utils.rb:33:in `merge_users_into_options!'
答案 0 :(得分:3)
试试这个,看看是否有帮助:
def twitter_get_users(client, user_names=[])
client.users user_names.map(&:dup)
end
答案 1 :(得分:2)
Ruby允许你freeze objects,以便它们不会被改变。 Twitter的宝石冻结了一个字符串,然后尝试在其上调用gsub!
,或者你传入了已经冻结的字符串。
这个答案并不能帮助您解决问题的根源,但它确实回答了“这意味着什么以及为什么会发生这种情况?”的问题。
答案 2 :(得分:1)
gems/twitter-1.0.0/lib/twitter/client/utils.rb
并查看第10行? : - )grep -r '.freeze'
)gems/twitter-1.0.0/
醇>