ruby系列教材(26):More about methods(3)

上一篇 / 下一篇  2008-02-02 15:32:28 / 个人分类:Ruby

大家感兴趣的东西来了---Collecting Hash Arguments

 

一切都来源于Hash,使用 Hash Object 作为 Arguments,例如:

def test(a,b)

  #...

end

 

我们可以这样用:

test("hi",{"no1"=>"good",

"no2"=>"bad"})

 

这里的括号让人看的很不舒服,ruby允许在调用method的时候,去掉hash object的括号:

test("hi","no1"=>"good","no2"=>"bad")

注意不要被表明的东西迷惑,这里并没有3个arguments,而是2个,所有的类似表达于 a=>b 都会被收集起来,作为一个hash object

 

其实大家喜欢使用 symbol object 作为 key,这样,我们在Rails中常见的method就出现了:

find(:all,:limit=>5,:order="id desc")

 

为了说明问题,这里特别举例:

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

这个例子给我们提供了一个清晰的映象,更加要注意的是,hash 中的 key-value 对交换顺序,结果也一样,这就说明了,当参数为hash object 时,我们可以不考虑顺序问题


TAG: Ruby

 

评分:0

我来说两句

我的栏目

日历

« 2024-05-10  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 22920
  • 日志数: 47
  • 建立时间: 2008-01-29
  • 更新时间: 2008-02-02

RSS订阅

Open Toolbar