2015-11-27 43 views
1

我有*的函數調用的mearning我一直無法從在線文檔來了解一個基本的問題:意義*的

def self.new(*args, &block) 

是什麼* ARGS指的是在函數調用上面?

回答

2

考慮以下方法

def user(user_name) 
    puts user_name 
end 

所以當你打電話

user("RPV") 

Output: 
RPV 
=> nil 

但是如果你通過一個以上的說法像

user("RPV", "Marek") 

它會給出錯誤

錯誤的參數數目(2 1)

爲了避免這種錯誤提示圖標的(*)操作是有幫助的

def user(*user_name) 
    puts user_name 
end 

,當你通過多個參數它處理轉換它陣列

user("RPV", "Marek") 

output: 
RPV 
Marek 
nil 

它使USER_NAME作爲數組

def user(user_name) 
    p user_name 
end 

user("RPV", "Marek") 

output: 

["RPV", "Marek"] 

希望你能使用它。