2017-02-19 2 views
-1
def dog 
    return "apple" 
    return "orange" 
end 

dog 

안녕하세요, 출력이 "사과"만 반환하는 이유는 무엇입니까? "사과"와 "오렌지"를 모두 반환하지 않아야합니까? 나는 프로그래밍에 상당히 익숙하지 않다.이 컨텍스트에서 출력을 설명합니다.

+0

'return'은 메소드 실행을 중지하고'return'에 주어진 값을 반환합니다.이 경우에는''apple "'입니다. 두 문자열 모두 "사과"와 "주황"을 원한다면'return % w [사과 오렌지] ' –

+0

들여 쓰기에 공백 두 개를 사용하십시오 –

답변

0

return은 메서드 실행을 중지하고 return (이 경우 "apple") 값을 반환하도록 프로그램에 지시합니다. 문자열이 모두 "apple""orange" 인 경우 배열을 반환해야합니다.

def dog 
    return %w[apple orange] 
end 

또한 Ruby는 return을 필요로하지 않는 방법으로 마지막 줄을 반환합니다. 다음과 같이 작성할 수 있습니다.

def dog 
    %w[apple orange] 
end 

일반적으로 Ruby에서 조건이 충족되거나 충족되지 않으면 return 실행은 메소드 실행을 중지하는 데 사용됩니다. 다음과 같은 것.

def dog(likes_fruit = true) 
    return [] if likes_fruit == false 
    # return [] unless likes_fruit # (this is the same as above, but unless can be confusing when learning ruby) 
    %w[apple orange] 
end 
+0

왜 "Batman will win"대신에 "Iron Man will win"이 출력되는 이유는 무엇입니까? "return은 프로그램에 메소드 실행을 중단하고 반환 값을 반환하도록 알려줍니다"라고 언급했기 때문입니다. "Batman will win"이 먼저오고 "Iron man will win"이 나오므로 루비가 "Batman will win"을 반환 할 때 ruby가 프로그램 실행을 중단하고 "Batman will win" ? – roppo

+0

내 의견 (질문)을 형식화 해 주셨습니다.이 웹 사이트를 처음 사용합니다. 나는 시간이있을 때 서식을 배울 것이다. 그리고 제 질문이 의미가 있기를 바랍니다. – roppo

+0

@roppo 이것은 람다가 여러분의'batman_ironman_lambda'와 다른 문맥이기 때문에 람다 내부의 리턴은 당신의 메소드에 영향을주지 않고 람다의 실행에 영향을 미친다. 아마 당신이 원하는 것은 람다 대신에'Proc'입니다. "return 키워드가 정확히 어떻게 작동하는지"섹션에서이 기사를 살펴보십시오. http://blog.honeybadger.io/using-lambdas-in-ruby/ –

관련 문제