2013-02-15 4 views
-1

I는 다음과 같은 코드가 : 루비Ruby의 로컬 변수 범위 규칙?

def test_compare() 
    if true 
    condition = true 
    else 
    condition = false 
    end 

    assert_equal(true, condition) 
end 

if 블록의 내부 변수 "I don't understand ruby local scope"에 따른 if 블록 외부 변수 선언과 같은 범위를 갖는다.

제어 구조 외부에서 먼저 변수를 선언하거나 제어 구조 외부에서 초기화하지 않고 변수를 초기화하는 것이 일반적인 방법입니까?

Java.NET 배경에서 볼 때 코드가 읽기 쉽지 않고 논리 오류가 발생하기 쉽습니다.

"Ruby에서 .NET 코드를 작성하지 마십시오."최선을 다하고 있지만 범위의 시작 부분이나 제어 구조 외부에서 범위 변수를 선언하는 것보다 위의 내용이 더 적합한 이유를 알고 싶습니다.

답변

3

if 값을 반환합니다. 이 동작을 사용하는 것이 더 깔끔합니다.

x = if condition 
    # several lines of calculations can be here 
    'true value' 
else 
    # several lines of calculations can be here 
    'false value' 
end 

또는이 구체적인 경우에는 3 진수 연산자를 사용하는 것이 좋습니다. 그것은 똑같은 일을하고 더 짧습니다.

x = condition ? 'true value' : 'false value'