2017-09-18 1 views

Antwort

0

Da Ruby eine dynamische Sprache ist und Duck Typing unterstützt, deklarieren wir niemals den Datentyp der Variablen oder Argumente der Methode. Damit Sie das Array in jeder Methode übergeben können, interessiert sich Ruby nur für die Methoden, die Sie für dieses Argument verwenden können, das ein Objekt dafür ist. So sicher sein, über die Array-Methoden, die Sie auf Array ausführen verwenden nur können Sie wie folgt tun:

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

Und Sie können es nennen mag:

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

und wenn Sie nennen es mit irgend anderes Argument als Array dann wird es geben:

Sie können eine Fehlermeldung auch statt eine Ausnahme auslösen, die von Ihnen abhängt.

Hoffe, das hilft.

1

Bitte versuchen Sie es. Das ist wirklich eine Frage zu Ruby als Rails

#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

Sie können es tun, indem

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

tun Sie die Methode mit

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

aufrufen können. Ruby ist eine dynamische Typisierung Sprache, die in der Methodendefinition, bedeutet, dass Sie die Argumenttypen nicht erklären:

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 

Wichtig ist, dass x ein Verfahren + hat, die y annimmt, und das Ergebnis von x + y ein Verfahren hat + das akzeptiert z. Dies wird Ente tippen genannt. Wichtig ist hier nicht, auf welche Klasse sich das Objekt bezieht, sondern auf welche Nachricht es reagieren kann.

Verwandte Themen