[问题] LRTHW ex18 疑问

楼主: fsj (夏天就是要去野台!)   2013-04-09 00:01:56
环境: Ruby 2.0.0p0
我在Learn Ruby The Hard Way的第18个练习里有一些小疑问想请教
http://ruby.learncodethehardway.org/book/ex18.html
# this one is like your scripts with argv
def puts_two(*args)
arg1, arg2 = args
puts "arg1: #{arg1}, arg2: #{arg2}"
end
# ok, that *args is actually pointless, we can just do this
def puts_two_again(arg1, arg2)
puts "arg1: #{arg1}, arg2: #{arg2}"
end
作者说 *args 其实是 pointless, 但是程式仍然可以执行?
那*args的意义到底是?
因为我如果把*args换成任意的*____ , 比如说:
def puts_two(*a)
arg1, arg2 = a
puts "arg1: #{arg1}, arg2: #{arg2}"
end
程式也都能执行, 还是说*号有特别的意义?
小弟是新手, 没有程式底子, 请各位多指教
谢谢解惑!
作者: aquarianboy (我是没牌的营养师!)   2013-04-09 06:21:00
你可以试着用 ruby + splat 当做关键字 google一下 :)
楼主: fsj (夏天就是要去野台!)   2013-04-09 11:02:00
太感谢了! 因为有个*号, 我不知道怎么google....再次感谢!
作者: mars90226 (火星人)   2013-04-09 14:22:00
现在又多了**和keyword argument~XD
作者: david50407 (Davy)   2013-04-09 21:08:00
*args 的意思是把所有参数push进去args这个array里所以换成*a就是把两个参数放进a里囉~
楼主: fsj (夏天就是要去野台!)   2013-04-09 22:32:00
感谢楼上!我找到这个网页也说明的满清楚 http://tinyurl.com/6q9yhu3

Links booklink

Contact Us: admin [ a t ] ucptt.com