, 그것은 다음과 같습니다문자 배열을 취하는 레일즈 콘솔에 함수를 작성하려면 어떻게해야합니까? 문자열을받는 함수를 작성할 때 내가 아는
def function("string")
하지만 내가 어떻게 배열을 취하는 하나를 작성하려면 어떻게해야합니까? 먼저 빈 배열을 정의해야합니다. s = [] 그리고 함수를 작성할 때 s를 입력으로 사용하면됩니까?
, 그것은 다음과 같습니다문자 배열을 취하는 레일즈 콘솔에 함수를 작성하려면 어떻게해야합니까? 문자열을받는 함수를 작성할 때 내가 아는
def function("string")
하지만 내가 어떻게 배열을 취하는 하나를 작성하려면 어떻게해야합니까? 먼저 빈 배열을 정의해야합니다. s = [] 그리고 함수를 작성할 때 s를 입력으로 사용하면됩니까?
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
당신에게 달린 예외를 발생시키는 대신 오류 메시지도 전달할 수 있습니다.
희망이 도움이됩니다.
시도해보십시오.
#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])
당신은 당신이
my_function([1,3,4], "string")
이 정말 레일보다 더 루비에 대한 질문과 방법을 호출 할 수 있습니다
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를 허용하는 +
이것은 오리 타이핑이라고합니다. 여기에서 중요한 것은 객체가 어떤 클래스인지는 알 수 없지만 어떤 메시지에 응답 할 수 있는지입니다.