BLOG main image
분류 전체보기 (239)
Rails (65)
Ruby (34)
이야기 (40)
스토리큐 (61)
그 밖에.. (30)
C# (6)
작은아이의 생각
agiletalk's me2DAY
[rails] Growl4Rails
美소년 ㅇㅅㅇ씨의 一日
마사키군의 생각
ayukawa's me2DAY
작은아이의 생각
agiletalk's me2DAY
[Google App Engine] 나의 첫번..
머드초보의 블로그
54,077 Visitors up to today!
Today 1 hit, Yesterday 42 hit

 SUBSCRIBE

2008/08/12 01:39

bs 는 궁금하다.

다음 코드가 에러를 발생하는 이유는?

  1. def method
  2. false || return 0

  3. end
  4. SyntaxError: compile error
    (irb):2: syntax error, unexpected tINTEGER, expecting kEND
            from (irb):3

 

연산자 우선순위 때문인 것으로 생각된다.

and, or 와 &&, || 는 연산자 우선순위만 빼고 모든 것이 동일하다.

 

위 코드는 ruby에서 다음과 같이 해석하는 것으로 생각된다.

  1. def method
  2. (false || return) 0

  3. end

왜 그럴까?

 

위 코드에 에러를 발생하지 않도록 하기 위해서는

  1. def method
  2. false || (return 0)

  3. end

혹은

  1. def method
  2. false or return 0

  3. end

와 같이 할 수 있다.

 

추가로 and, or와 &&, || 의 연산자 우선순위 사이에는 assignment 가 있다. 그래서 다음과 같은 코드도 원치 않는 결과를 보여줄 것이다. 이 글을 참조.

  1. total = shopping_cart.empty? and shopping_cart.total

 

이 글은 스프링노트에서 작성되었습니다.