【问题标题】:Can't modify frozen String error using gsub and hash无法使用 gsub 和哈希修改冻结字符串错误
【发布时间】:2016-06-21 22:04:45
【问题描述】:

我正在尝试使用 capybara 创建一个 ruby​​ rspec,但在尝试从哈希中删除部分字符串时出现此错误:无法修改冻结字符串

scenario "check doc" do
docs = {
  'A doc' => 'a.txt',
  'B doc' => 'b.txt',
  'C doc' => 'c.txt'
}
random_doc = docs.keys.sample
page.should have_css('.class', :text => 'Document ' + random_doc.gsub!(' doc') + ' was selected')

任何帮助将不胜感激!

【问题讨论】:

    标签: ruby rspec capybara


    【解决方案1】:

    密钥名称已冻结,因此您无法就地修改它 - 只需使用 gsub 而不是 gsub!以便它返回字符串的修改副本,而不是尝试进行就地修改

    【讨论】:

    • 只做 gsub 后,我得到一个新错误:没有将枚举数隐式转换为字符串
    • @DonaldC。因为如果你想让 gsub 返回一个字符串,它需要两个参数 - 我猜你想要 random_doc.gsub(' doc','')
    • 发布后才意识到这一点。感谢您的帮助,非常感谢!
    • @DonaldC。不客气,如果答案对您有所帮助,请不要忘记接受答案(复选标记),以便将问题标记为已回答
    猜你喜欢
    • 1970-01-01
    • 2013-06-24
    • 2021-02-19
    • 1970-01-01
    • 2013-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多