질문과 답변

Extra Form

class Ein
  attr_reader :zwei
  def drei
    print @zwei
  end
  def omega=(a)
    a = @zwei
  end
end

a = Ein.new
a.omega="Why so Serious?"
a.drei

 

이렇게 스크립트를 쓰면 nil이 출력됩니다.

 

class Ein
  attr_reader :zwei
  def drei
    print @zwei
  end
  def omega=(a)
    @zwei = a

  end
end

a = Ein.new
a.omega="Why so Serious?"
a.drei

 

그러나 이렇게 입력하면 제대로 Why so Serious가 출력됩니다. 그냥 앞뒤가 바뀌었을 뿐인데도요.

 

저 둘의 차이가 뭐길래 하나는 @zwei의 값이 없다고 나오고 하나는 제대로 대입이 되는건가요?

 

Comment '6'
  • profile
    슈팅스타* 2012.01.26 18:32

    a = 0, b = 1 이라고 할때

    a = b라면 a와 b 둘 다 1이 되고

    b = a라면 a와 b 둘 다 0이 되는 거라고 알고 있습니다

  • ?
    박권도 2012.01.26 21:13

    아.. 앞뒤 순서도 상관이 있군요. 감사합니다.

  • profile
    습작 2012.01.26 18:44
    a = @zwei 는 a에  @zwei를 대입하는 것입니다. 반면 @zwei = a는 @zwei에 a를 대입하는 것이지요.
    전자의 경우 @zwei는 한번도 정의하지 않은 변수이기 때문에 값이 nil 이지요.
    후자의 경우 "Why so Serious?"라는 문장을 @zwei에 대입하고 출력했기 때문에 제대로 나온 것입니다.
  • ?
    박권도 2012.01.26 21:13

    아하... 개념을 착각하고 있었던 모양입니다. 친절한 설명 감사드립니다.

  • ?
    신기 2012.01.26 21:10

    A=B 는 'A와 B가 같다' 가 아니라 'A에 B를 대입한다'로 알고 있습니다. 그 차이인 것 같네요.

  • ?
    박권도 2012.01.26 21:14

    간단하면서도 이해하기 쉬운 설명 감사드려요~


List of Articles
종류 분류 제목 글쓴이 날짜 조회 수
공지 묻고 답하기 가이드 습작 2014.06.14 12451
Board Pagination Prev 1 2 3 4 5 Next
/ 5