2017-09-18 31 views

回答

0

由於Ruby是動態語言,並且它支持Duck Typing,所以我們從不聲明方法的變量或參數的數據類型。所以你可以通過任何方法傳遞數組,ruby只關心你可以在該參數上使用的方法,這是它的一個對象。所以要確定你使用的是將執行對陣列只有你可以像這樣的陣列方法:

def doSomething(value) 
    if (value.is_a?(Array)) 
    value.any_array_method # For eg: value.include?('a') 
    else 
    raise "Expected array value" 
    end 
end 

你可以這樣調用它:

doSomething(['a', 'b', 'c']) 

,如果您有任何叫它然後它會給出:

RuntimeError: Expected array value 

您也可以傳遞錯誤消息,而不是引發依賴於您的異常。

希望這會有所幫助。

1

請試試這個。

#here argument name can be anything. It not compulsory to use array as argument name, it can be anything like `string`, `xyz` etc 

def function(array) 
    p array 
end 

function([1,2,3,4,5]) 
0

您可以通過執行

def my_function(arr=[], s) 
    puts arr.inspect 
    puts s.inspect 
end 

做到這一點,你可以調用該方法

my_function([1,3,4], "string") 
1

這的確是一個關於Ruby比Rails問題。 Ruby是一種動態類型語言,這在方法定義,意味着你沒有聲明參數類型:

def add_three (x, y , z) 
    x + y + z 
end 

add_three(1, 2, 3) # 6 
add_three('a', 'b', 'c') # 'abc' 
add_three([2], [3], [4], # [2, 3, 4] 
add_three(Date.new(2017,3,4), 1, 1), # new date 2017.3.6 

重要的是,x具有接受爲y的方法+,並從x + y結果有一個方法接受z的+。這被稱爲鴨子打字。這裏重要的不是哪個類的對象,而是它可以響應的消息。

相關問題