:
으로 시작하는 문자열, immutable(변경 불가능)
메모리에 한 번만 저장됨
# string과 symbol 비교
puts "string".object_id
puts "string".object_id
# 두 개의 object_id의 값은 다름
puts :symbol.object_id
puts :symbol.obkect_id
# 두 개의 object_id의 값은 같음
# symbol 생성
my_symbol = :symbol
symbol_hash = {
:one => 1,
:two => 2,
:three => 3
}
strings = ["a", "b", "c"]
symbols = []
strings.each do |s|
symbols.push s.to_sym
# symbols.push s.intern 도 동일하게 작동!
end
grades = {
sho: 100,
rou: 80,
rai: 70,
getsu: 50
}
good = grades.select { |name, grade| grade > 60}
grades = {
sho: 100,
rou: 80,
rai: 70,
getsu: 50
}
grades.each_key {|key| puts key}
# sho \n rou \n ...
grades.each_value {|value| puts value}
# 100 \n 80 \n ...
hash rocket
타입
hash_rocket = {
"one" => 1,
"two" => 2
}
Ruby 1.9. 버전부터 바뀐 syntax : 더 간단해짐
new_hash = {
one: 1,
two: 2,
three: 3
}