2014-04-07 3 views
0

여러 변수를 반환해야하는 함수를 작성 중이며 함수의 변수 선언에 C++ &을 사용하는 것과 동일한 루비가 있는지 궁금합니다. 다음 작업을 수행 할 수 있도록 :함수 (변수 &) 루비의 C++ 함수

def function(variable &, variable2 &) 
    variable = foo 
    variable2 = foo 
end 

내가 복귀 기능을 사용할 수 있다는 것을 이해하지만, 내가 전달하고있어 변수의 수와, 그냥 코드에 아주 좋은 보이지 않는다.

+2

수 한 번에 여러 값을 반환해야하는지 아니면 수정하려는 일부 변수가 있으므로 특히 참조로 전달해야하는지 명확히해야합니다. 귀하의 C + + 예제는 효과적으로 두 가지를 모두 수행합니다 - 직접적인 * 루비와 동일한 것은 없지만 루비를 다른 방식으로 만날 수 있습니다. –

답변

0

당신이로 찾으면 원하는 가정 패스에 의해 참조, 루비에서이 작업을 수행하는 방법은 접근을 가진 구조체 같은 클래스를 정의하는 것입니다 : 그런 다음 내부를 단축하기 위해 메타 프로그래밍을 사용할 수

class MyStruct 
    attr_accessor :variable, :variable2 
end 

def function(mystruct) 
    mystruct.variable = foo 
    mystruct.variable2 = foo 
end 

을 함수의. 명백히 이것은 순수한 통과 별 솔루션만큼 깨끗하지는 않지만 해결 방법을 제공합니다.

1

루비는 변수에 대한 참조 개념을 지원하지 않습니다.

대신 ... 단순히 값의 배열을 반환하여

def my_method 
    return [3, 4] 
end 

... 그리고 "스플래"하나 이상의 변수에 결과를 여러 값을 반환 할 수

x, y = my_method 
# x => 3 
# y => 4