Ruby Koans中,关于_散列的部分.rb包含以下代码和注释:

def test_changing_hashes
    hash = { :one => "uno", :two => "dos" }
    hash[:one] = "eins"

    expected = { :one => "eins", :two => "dos" }
    assert_equal true, expected == hash

    # Bonus Question: Why was "expected" broken out into a variable
    # rather than used as a literal?
end

我想不出 comments 中 prize 问题的答案——我try 了他们建议的替代品,结果是一样的.我只知道这是为了可读性,但我看不到像本教程其他地方提到的一般编程建议.

(我知道这听起来像是某个地方已经有了答案,但我找不到任何权威.)

推荐答案

这是因为你不能使用这样的东西:

assert_equal { :one => "eins", :two => "dos" }, hash

Ruby认为{ ... }是一个块,所以它应该被"分解成一个变量",但你总是可以使用assert_equal({ :one => "eins", :two => "dos" }, hash)

Ruby相关问答推荐

从同名方法调用 ruby​​ 中的方法

生成带有小写字母和数字的唯一随机字符串

Ruby 中的内联注释

bundler 可以告诉我 Gemfile 中的哪些 gem 有更新的版本

如何增加 ruby​​ 应用程序的堆栈大小.递归应用程序获取:堆栈级别太深(SystemStackError)

无法在 Heroku 教程中使用 Python 启动工头

将一个目录的内容复制到另一个目录

如何将哈希保存到 CSV

如何将 each每个方法添加到 Ruby 对象(或者我应该扩展 Array)?

格式化 Ruby 的漂亮打印

Rails - create and create!

Ruby 中的 $1 和 \1

通过 x 个字符在 Ruby 中获取子字符串

Sublime Text 2 控制台输入

如何只获取没有命名空间的类名

如何打破Ruby中的外循环?

有条件的数组的第一个元素

如何在 Ruby 中向异常消息中添加信息?

使用 RSpec 测试哈希内容

如何在 Rails 应用程序中使用 httparty 的基本身份验证?