티스토리 뷰

개발자노트

Ruby symbols

앤디군 2005. 8. 21. 00:04
ruby에는 symbol은 symbol name을 가지고 유일하게 존재하고 문자열이나 이름등을 기술할 때 쓰이는 데이터 타입을 말하는데 보통 상수처럼 많이 쓰이고 있다.

Understanding Ruby Symbols에서 symbol과 문자열(String)이 무엇이 다른지 명확히 보여주고 있는데 symbol과 string의 가장 큰 다른 점은 instance의 생성 여부이다.

예를 들어 hash의 key로 string이 사용된다면 그 hash를 이용할 때마다 key로 사용되는 string의 instance는 매번 생성이 된다. 하지만 symbol을 사용하게 되면 symol name이 같은 이상 유일한 하나의 object instance만을 가리키게 되므로 매번 새로운 instance가 생성되지 않는다. 이는 object_id속성을 비교해서 알 수 있는데, 문자열의 경우 문자열의 내용이 같다고 하더라도 다른 위치에서 생성된 두 문자열의 object_id는 다르지만 symbol의 경우 이름이 같으면 object_id도 같다. object_id는 instance별로 유일하게 부여된다.
이 글의 저자는 문자열과 symbol을 사용하는 기준을 다음과 같이 정하고 있다.
(1) If the contents (i.e. the sequence of characters) of the object is important, use a String.

(2) If the identity of the object is important, use a Symbol.

하지만 "문자열을 상수처럼 사용하는 경우에는 symbol을 쓴다"라는 규칙이 좀 더 간단하지 않을까?
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함