在Ruby中,为什么我需要定义一个哈希,但不需要定义变量?

时间:2011-08-01 19:54:13

标签: ruby hash

我的意思是,我没有宣布

my_var = new variable

或类似的东西。 我跟你一起去

my_var = 1;

同样,为什么我不能

books["War and peace"] = :masterpiece

为什么我需要提前定义?

books = {}

2 个答案:

答案 0 :(得分:8)

books["War and peace"] = :masterpiece使用[]=books作为参数调用"War and peace"上的:masterpiece方法。如果books不存在,则无法在其上调用方法。

或者以不同的方式处理问题:如果ruby确实做了一些魔术来自动初始化变量,当你对它们使用[]=时,ruby应该如何知道你希望books成为哈希在上面的例子中?任何类都可以使用[][]=运算符来接受字符串作为索引。

答案 1 :(得分:7)

这样做的:

my_var = 1

定义和分配局部变量。使用哈希可以这样做:

books = { 'War and Peace' => :masterpiece }
相关问题