【问题标题】:Ruby to_s isn't converting integer to stringRuby to_s 没有将整数转换为字符串
【发布时间】:2021-07-22 18:20:16
【问题描述】:

我正在尝试将哈希中的一些值转换为字符串,但类型保持不变。

recommended_stores = []
results['data'].each do |stores_list|
  stores_list['stores'].each do |store|
    store['id'].to_s
  end
  recommended_stores << stores_list['stores']
end

我错过了什么吗?

【问题讨论】:

  • 你用store['id'].to_s 计算一个字符串值,但你没有在任何地方分配它,所以它会丢失。你有点告诉 Ruby:将整数转换为字符串,然后丢弃字符串!

标签: ruby-on-rails ruby


【解决方案1】:

#to_s 方法只是返回转换为字符串的元素,但实际上并没有将元素永久转换为字符串。你可以使用#map,而不是使用#each,就像这样。

results['data'].map do |stores_list|
  stores_list['stores'].each do |store|
    store['id'] = store['id'].to_s
  end
end

这将返回一个数组数组,如果你希望它只是一个数组,你可以使用#flat_map

【讨论】:

  • 这实际上返回了一个二维字符串数组,我想保留每个对象,但我明白你的意思。谢谢! @vaporyhumo
  • 是的,我完全没有尝试运行它,但我确信你会得到它。祝你有美好的一天 m8。
【解决方案2】:

你得到了所有东西,但你没有存储它,我认为用 value.to_s 分配哈希值会起作用,你可以尝试如下

recommended_store = []
results['data'].each do |stores_list|
    stores_list['stores'].each do |store|
        store['id'] = store['id'].to_s
    end
    recommended_store << stores_list['stores']
end

注意:在您的问题数组中声明为“recommended_store”,最后一行您将元素推入“recommended_stores”希望它只是一个错字,而不是问题的原因:-)

【讨论】:

  • 完全是一个错字 - 不错
最近更新 更多