[問題] 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