2011년 6월 2일 목요일

Variables

Variables

변수는 객체의 자취를 저장하기 위해 쓰인다. 즉, 변수로 객체를 추적할 수 있다. 각 변수는 객체 하나의 참조를 저장하고 있다.
person = "Tim"
person.id»537771100
person.type»String
person»"Tim"



"Tim"이라는 값을 가진 새 문자열 객체를 만들어 이를 지역변수 person에 저장하였다. 이 변수는 객체 ID, 클래스, 값등 문자열의 특징을 가지고 있다.
변수는 객체가 아니다. 변수는 단순히 객체에 대한 참조를 가지고 있을 뿐이며, 객체는 메모리 어딘가에 있고 변수는 그 객체을 가리키고 있을 뿐이다.
person1 = "Tim"
person2 = person1
person1[0] = 'J'
person1»"Jim"
person2»"Jim"




"Tim" 문자열을 변수 persion1에 저장한다. persion1은 "Tim" 문자열의 메모리 주소를 가리키고 있게 된다.
person1을 person2에 저장하게 되면 person2도 "Tim" 문자열의 메모리 주소를 동일하게 가리키게 된다.
person1을 이용하여 "Tim"문자열의 첫번째 글짜를 "J"로 변경하면 person1, person2이 가리키는 객체가 변경되게 된다.
person1 = "Tim"
person2 = person1.dup
person1[0] = "J"
person1»"Jim"
person2»"Tim"



person2변수에 객체를 저장할 때 "dup"을 사용하면 새로운 객체를 생성하여 person2에 저장하게 된다. 위의 예제에서는 person1, person2가 서로 다늘 객체를 가리키고 있게 되는것이다.

person1 = "Tim"
person2 = person1
person1.freeze       # prevent modifications to the object
person2[0] = "J"
prog.rb:4:in `=': can't modify frozen string (TypeError)
from prog.rb:4

"freeze" 메서드는 객체의 상태를 변경할수 없게 만든다. 만일 객체를수정하려고 하면, 루비는 TypeError을 발생하게 된다.

댓글 없음:

댓글 쓰기

ETL 솔루션 환경

ETL 솔루션 환경 하둡은 대용량 데이터를 값싸고 빠르게 분석할 수 있는 길을 만들어줬다. 통계분석 엔진인 “R”역시 하둡 못지 않게 관심을 받고 있다. 빅데이터 역시 데이터라는 점을 볼때 분산처리와 분석 그 이전에 데이터 품질 등 데이...