[問題] LRTHW ex18 疑問

看板Ruby作者 (夏天就是要去野台!)時間11年前 (2013/04/09 00:02), 編輯推噓0(007)
留言7則, 4人參與, 最新討論串1/1
環境: 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

04/09 06:21, , 1F
你可以試著用 ruby + splat 當做關鍵字 google一下 :)
04/09 06:21, 1F

04/09 11:02, , 2F
太感謝了! 因為有個*號, 我不知道怎麼google....再次感謝!
04/09 11:02, 2F

04/09 14:22, , 3F
現在又多了**和keyword argument~XD
04/09 14:22, 3F

04/09 21:08, , 4F
*args 的意思是把所有參數push進去args這個array裡
04/09 21:08, 4F

04/09 21:09, , 5F
所以換成*a就是把兩個參數放進a裡囉~
04/09 21:09, 5F

04/09 22:32, , 6F
感謝樓上!
04/09 22:32, 6F

04/09 22:32, , 7F
我找到這個網頁也說明的滿清楚 http://tinyurl.com/6q9yhu3
04/09 22:32, 7F
文章代碼(AID): #1HOkduUd (Ruby)
文章代碼(AID): #1HOkduUd (Ruby)