반응형
해시
해시는 컬렉션을 지원합니다. 해시의 내부는 키와 키에 해당하는 값이 들어 있습니다.
hash = {
:apple => "iPhone", # 키= :apple / 값= "iPhone"
"samsung" => "Galaxy", # 키= "samsung" / 값= "Galaxy"
google: "pixel" # 키= :google / 값= "pixel"
}
예시 코드를 보시면 아시겠지만, 해시를 만들 때 값을 정의하는 방법이 총 세 가지가 있습니다.
첫 번째는 심볼
이라는 값을 키로 설정하는 방법,
두 번째는 문자열을 키로 설정하는 방법,
세 번째는 첫 번째와 동일한 방법(축약 표현)입니다.
해시 : 값 추가, 접근
해시에 값을 추가할 때는 해시변수[키] = 값
형식으로 넣을 수 있습니다.
hash = Hash.new
hash[:apple] = "iPhone"
hash["samsung"] = "Galaxy"
값을 접근할 때는 해시변수[키]
로 접근할 수 있습니다.
puts hash[:apple]
# iPhone
심볼
심볼이란 변경이 불가능한(immutable), 유일한 객체입니다.
심볼은 선언 시 값 지정이 필요하지 않으며(자동으로 할당됩니다),
힙 영역에 저장됩니다.
a = "apple"
a.object_id # 70189275356320
b = "apple"
b.object_id # 70189275367620
# 비슷해 보이지만 ID가 다르다
b = a # b에 "apple"가 들어 있음
b.object_id # 70189275356320
# 얕은 복사가 적용됨
ap = :apple # apple이라는 심볼을 ap이라는 변수에 할당
ap # :apple
ap.object_id # 1516828
ba = :apple
ba.object_id # 1516828
심볼은 유일한 객체라는 특성을 갖고 있기 때문에 해시의 키로 사용할 수 있고,
해시의 키로 사용할 때는 축약형 표현이 가능합니다.
hash = {
:apple => "iPhone" # 일반적인 해시의 입력 방법(키 => 값)
samsung: "Galaxy" # 심볼을 이용한 해시의 입력 방법(세미콜론 없는 심볼: 값)
}
배열
해시와 심볼이지만 배열에 대한 정리를 깜빡해서 추가로 적습니다.
루비의 변수가 데이터 형식을 지정하지 않고 아무 데이터나 넣을 수 있듯,
배열 역시 아무런 데이터나 넣을 수 있습니다.
요컨대, 정수의 배열 안에 문자열이 들어있을 수 있으며, 배열이 들어가 있을 수도 있습니다.
arr = [ 1, "string", 3, [4, 5], 6 ]
arr[2] # "string"
arr[4] # [4, 5]
배열의 참조
루비의 배열은 정의되지 않은 부분에 대해 nil
을 반환하며,
음수의 인덱스값은 뒤에서부터 읽어서 값을 반환합니다.
배열의 범위 지정
배열을 참조할 때, 범위를 지정하여 여러 데이터를 얻어올 수 있습니다.
arr = [ 1, 2, 3, 4, 5 ]
arr[1, 3] # 1부터 3개; [ 1, 2, 3 ]
push, pop
push
(맨 뒤에 추가), pop
(맨 뒤에 삭제) 메소드를 이용해 배열을 스택처럼 활용할 수 있습니다.
'개발 > Ruby on Rails' 카테고리의 다른 글
Ruby : 기초(6) 클래스 (0) | 2020.03.14 |
---|---|
Ruby : 기초(5) 메소드 (0) | 2020.03.14 |
Ruby : 기초(3) 반복 (0) | 2020.03.13 |
Ruby : 기초(2) 연산 (0) | 2020.03.13 |
Ruby : 기초(1) 변수 (0) | 2020.03.13 |