大家感興趣的東西來(lái)了---Collecting Hash Arguments
一切都來(lái)源于Hash,使用 Hash Object 作為 Arguments,例如:
def test(a,b)
#...
end
我們可以這樣用:
test("hi",{"no1"=>"good",
"no2"=>"bad"})
這里的括號讓人看的很不舒服,ruby允許在調用method的時(shí)候,去掉hash object的括號:
test("hi","no1"=>"good","no2"=>"bad")
注意不要被表明的東西迷惑,這里并沒(méi)有3個(gè)arguments,而是2個(gè),所有的類(lèi)似表達于 a=>b 都會(huì )被收集起來(lái),作為一個(gè)hash object
其實(shí)大家喜歡使用 symbol object 作為 key,這樣,我們在Rails中常見(jiàn)的method就出現了:
find(:all,:limit=>5,:order="id desc")
為了說(shuō)明問(wèn)題,這里特別舉例:
def test(opts={})
"#{opts[:name]}---#{opts[:des]}"
end
puts test(:name=>‘kc‘,:des=>‘I like ruby‘)
puts test(:des=>‘I like ruby‘,:name=>‘kc‘)
結果:
kc---I like ruby
kc---I like ruby
這個(gè)例子給我們提供了一個(gè)清晰的映象,更加要注意的是,hash 中的 key-value 對交換順序,結果也一樣,這就說(shuō)明了,當參數為hash object 時(shí),我們可以不考慮順序問(wèn)題
聯(lián)系客服