루비언어에서 심볼의 개념 이해하기

http://www.troubleshooters.com/codecorn/ruby/symbols.htm

지금까지 루비, 특히 레일즈에서 사용되는 심볼을 어렴풋하게나마 이해하고 있었는데, 위의 링크의 내용을 읽어 보고 루비의 심볼에 대한 확실한 개념을 알게 되었다.

1. 심볼은 integer나 string으로 변환될 수 있다. 그러나 심볼이란 string으로 대신해서 사용할 수 있는 상수(constant)와 같은 것이지만 같은 String을 반복해서 사용할 때처럼 메모리를 소모하지 않아 메모리 절약에 도움이 될 수 있다. 동일한 심볼을 수천번 반복에서 코딩에 사용해도 심볼값은 하나의 주소값만을 가진다.

2. 심볼은 런타임때 값을 변경할 수 없다.(immutable)

3. 심볼은 .to_i 나 .to_s 메소드를 이용해서 의미없는 공유의 정수값이나 심볼이름과 같은 문자열을 간접적으로 얻을 수 있지만, 심볼 자체로는 String객체의 그 많은 메소드들을 사용할 수 없다. 왜냐하면 심볼은 Symbol 객체이기 때문이다.

아래는 위 링크의 마지막에 있는 요약을 복사해 놓은 것이다.

  • A Ruby symbol looks like a colon followed by characters. (:mysymbol)
  • A Ruby symbol is a thing that has both a number (integer) and a string.
  • The value of a Ruby symbol’s string part is the name of the symbol, minus the leading colon.
  • A Ruby symbol cannot be changed at runtime.
  • Neither its string representation nor its integer representation can be changed at runtime.
  • Ruby symbols are useful in preventing modification.
  • Like most other things in Ruby, a symbol is an object.
  • When designing a program, you can usually use a string instead of a symbol.
    • Except when you must guarantee that the string isn’t modified.
  • Symbol objects do not have the rich set of instance methods that String objects do.
  • After the first usage of :mysymbol all further useages of :mysymbol take no further memory — they’re all the same object.
  • Ruby symbols save memory over large numbers of identical literal strings.
  • Ruby symbols enhance runtime speed to at least some degree.

글쓴이: 최효성

외과전문의,웹프로그래밍,컴퓨터 일러스트레이션 / Surgeon, Medical Illustration, Web Programmer

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중