Ruby 怪异的赋值行为

标签 ruby

这是 ruby​​ 错误吗?

target_url_to_edit = target_url

if target_url_to_edit.include?("http://")
  target_url_to_edit["http://"] = ""
end

logger.debug "target url is now #{target_url}"

这会返回没有 http://的 target_url

最佳答案

您需要复制内存中的对象,因为变量名只是对内存中对象的引用:

target_url_to_edit = target_url.dup

现在 target_url_to_edit 被分配了原始对象的新副本。

对于您的情况,此代码可能只在一行中执行相同的操作(没有重复,没有 if):

target_url_to_edit = target_url.sub(%r{^http://}, "")

关于Ruby 怪异的赋值行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3029263/

相关文章:

ruby-on-rails - Rails 无法在 Sierra 上安装

ruby - 什么是 Rack ?我可以使用它通过 Ruby 构建 Web 应用程序吗?

ruby - 通过 Redis 手动启动 Sidekiq 作业

Ruby:FileUtils.cp_r 和无效的多字节字符异常

ruby-on-rails - 如何在 Capybara 测试中用 Rspec 淘汰 Warden/Devise

ruby - 想了解 EM-Synchrony 、em-http-request 和 Fiber 之间的关系吗?

javascript - 如何在 openstreetmap 中编辑数据层可见性的缩放级别

ruby - 修复 debian 中的 ruby​​ gems 路径问题

ruby-on-rails - 将 i18n gem 与 View 文件一起使用时出现问题

ruby-on-rails - 查找日期时间与今天日期匹配的记录 - Ruby on Rails