2017-09-18 1 views

답변

0

Ruby는 동적 언어이며 Duck Typing을 지원하므로 메서드의 변수 또는 인수의 데이터 유형을 선언하지 않습니다. 따라서 어떤 방법 으로든 배열을 전달할 수 있습니다. 루비는 그 객체에 해당하는 인자에 사용할 수있는 메소드를 신경 써야합니다. 그래서 당신은 단지 당신이 이런 식으로 할 수있는 배열에서 실행됩니다 사용하는 배열 방법에 대해 확인하기 위해 :

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

그리고 당신은 그것을 호출하는 경우 :

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

그리고 당신이 그것을 호출 할 수 있습니다 좋아 배열보다 다른 인수가 있으면 다음을 제공합니다.

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

당신은 당신이

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

이 정말 레일보다 더 루비에 대한 질문과 방법을 호출 할 수 있습니다

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

을 수행하여 그것을 할 수 있습니다. 루비는 방법 정의에, 당신은 인수 유형을 선언하지 않는 것을 의미 동적 타이핑 언어입니다 : 어떤 중요한 것은 X가 Y를 받아들이는 방법 +을 가지고 있다는 것입니다

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의 결과는 방법이있다 z를 허용하는 + 이것은 오리 타이핑이라고합니다. 여기에서 중요한 것은 객체가 어떤 클래스인지는 알 수 없지만 어떤 메시지에 응답 할 수 있는지입니다.

관련 문제