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