作者fsj (夏天就是要去野台!)
看板Ruby
标题[问题] LRTHW ex18 疑问
时间Tue Apr 9 00:01:56 2013
环境: 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
程式也都能执行, 还是说*号有特别的意义?
小弟是新手, 没有程式底子, 请各位多指教
谢谢解惑!
--
http://www.facebook.com/AdJudge
广告, 创意无限
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 1.164.49.131
1F:→ aquarianboy:你可以试着用 ruby + splat 当做关键字 google一下 :) 04/09 06:21
2F:→ fsj:太感谢了! 因为有个*号, 我不知道怎麽google....再次感谢! 04/09 11:02
3F:→ mars90226:现在又多了**和keyword argument~XD 04/09 14:22
4F:→ david50407:*args 的意思是把所有参数push进去args这个array里 04/09 21:08
5F:→ david50407:所以换成*a就是把两个参数放进a里罗~ 04/09 21:09
6F:→ fsj:感谢楼上! 04/09 22:32