2011-08-30 75 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