寫一個函數,需要一個字符串的時候,我知道,它看起來像:如何在接收字符數組的rails控制檯中編寫函數?
def function("string")
,但我怎麼寫一個接受一個數組?我應該首先定義一個空陣列s = [],然後寫入函數時,只需使用s作爲輸入?
寫一個函數,需要一個字符串的時候,我知道,它看起來像:如何在接收字符數組的rails控制檯中編寫函數?
def function("string")
,但我怎麼寫一個接受一個數組?我應該首先定義一個空陣列s = [],然後寫入函數時,只需使用s作爲輸入?
由於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
您也可以傳遞錯誤消息,而不是引發依賴於您的異常。
希望這會有所幫助。
請試試這個。
#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])
您可以通過執行
def my_function(arr=[], s)
puts arr.inspect
puts s.inspect
end
做到這一點,你可以調用該方法
my_function([1,3,4], "string")
這的確是一個關於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的+
。這被稱爲鴨子打字。這裏重要的不是哪個類的對象,而是它可以響應的消息。