2012-04-22 1 views
2

현재 The Ruby Programming Language을 읽었으며 else 문이 제대로 실행되면 Ruby-esque를 읽는 방법을 모르겠습니다. 다음과 같은 정규 if-else 문에서 두 번째 코드 블록에 루비 코드를 작성하도록 도와 줄 수 있습니까?다른 조건문이있는 경우 "Ruby-esque"

if some_condition 
    return x 
else 
    return y 
end 

그래서 확실하지 않은 루비 코드입니다.

minimum = if x < y then x else y end 

max = x > y ? x : y 

고마워요!

+1

"당신이 날 같은 일반적인 경우-else 문에서 다음을 작성하는 데 도움 수 이?" - 나는이 질문을 이해하지 못한다. –

+0

질문에 대한 답을 바꾸 었습니다. :) –

답변

5

Ruby는 Functional Programming 패러다임에서 나온 아이디어를 사용하여 어려움을 겪고 있습니다. 즉, 모든 것이 표현식이므로 값을 반환합니다. 이것은 자바와 같은 언어는 정말 (:

public boolean test() { 
    boolean x = if (1 > 2) { false; } else { true; }; 
    return x; 
} 

단순히 문법적으로 유효하지 않습니다 예를 들어)을 지원하지 않는 아이디어, 조건문에 대한도 마찬가지입니다.

당신은 루비 터미널에서 볼 수 있습니다

will_be_assigned_nil = false if (1 > 2) # => nil 
will_be_assigned_nil # => nil 

따라서, 귀하의 질문에. 첫 번째는 다음과 같이 쓸 수있다 :

if x < y 
    mininum = x 
else 
    minimum = y 
end 

두 번째는 다른 언어의 삼항 연산자 같고,하는 것과 같습니다

if x > y 
    max = x 
else 
    max = y 
end 

그것은 뿌리를 언어의 & 유산을 기억하는 것이 도움이 그들의 구조를 이해하려고 할 때. Ruby는 Perl과 철학을 공유하는 "하나 이상의 방법"을 공유하며 관용적 인 루비 코드는 종종 우아함을 강조합니다.

"표현식 후"스타일 조건문이 이에 대한 좋은 예입니다. 내 방법의 시작 가드 표현이있는 경우, 그것은 나를 기록 할 드물지 않다 :

raise "Pre-condition x not met" unless x # (or "if !x" , preference thing) 
raise "Pre-condition y not met" unless y # etc., etc. 

대신

if !x 
    raise "Pre-condition x not met" 
end 
if !y 
    raise "Pre-condition y not met" 
end 
+0

정말 고마워요! –

+0

나는 당신에게 조금 더 배경을 주었다. – andrewdotnich