2011-08-30 65 views
0

我farily新的Ruby编程语言和我遇到这行代码来:Ruby的语法调用方法

f.options[:chart][:defaultSeriesType] = "bar" 

可能有人请解释一下,一个给我吗?因为这样做:

f.options([:chart][:defaultSeriesType]) = "bar" 

给你一个错误。 在此先感谢!

+0

什么样的错误? – lucapette

+0

语法错误,意外的'=',期待关键字结束 f.option([:chart] [:defaultSeriesType])=“bar” – Chris

+0

这是因为f.options它是一个散列......当然这样的语法它不合法的散列目的。 –

回答

1

您正在与哈希处理。
当你有这样的疑问时,它会打印出数据结构的内容。
我让你用一个例子明白:
从你写的方式基于,似乎你正在处理以这种方式更加少组织的对象:

f.options = { chart => {defaultSeriesType => "bar"; somethingElse => "bor"}, graph => {attribute1=> "anotherString"} } 

所以,你可以查询对象通过书写:f.options[:graph][:attribute1]f.options[:chart][:somethingElse]等。
我建议你把钱花在http://www.tryruby.org一分钟,然后用哈希玩,你也可以到这里看看:http://www.troubleshooters.com/codecorn/ruby/basictutorial.htm#_Hashes

当然它有助于

3

f.options应该是一个散列,像这样

f.options = {:chart => {}} 

那你先写命令将工作。所以这不是一个方法调用,而是实际设置哈希的值。

希望这会有所帮助。

1

只要你有这样的问题,打开控制台,并与对象

>f.options.class 
=> Hash 
>f.options[:chart].class 
=> Hash 

f.options[:chart]返回一个哈希玩。因此,行f.options[:chart][:defaultSeriesType] = "bar"正在设置密钥的值为'defaultSeriesType',值为'bar'。

而且,这是一个很好的做法是使用一个符号,而不是字符串键,因此在前面的冒号 - :defaultSeriesType