해시 키로 심볼 사용하기
Coddy Ruby 여정의 기초 섹션에 포함된 레슨 — 88개 중 78번째.
지금까지 여러분은 해시 로켓 구문(hash rocket syntax)을 사용하여 문자열을 해시 키로 사용해 왔습니다. 하지만 Ruby 개발자들은 보통 그 대신 심볼(symbol)을 키로 사용하는데, 이는 더 깔끔하고 효율적인 접근 방식을 제공합니다.
이전에 배웠던 심볼(symbol)을 기억하시나요? 심볼은 콜론(:)으로 시작하는 가볍고 불변하는 식별자입니다. 심볼을 키로 사용할 때, Ruby는 특별한 단축 구문을 제공합니다:
person = {name: "Alice", age: 25, city: "Paris"}
puts person # 출력: {:name=>"Alice", :age=>25, :city=>"Paris"}name:이 :name =>를 어떻게 대체하는지 확인해 보세요. 이 단축 표기법은 키가 심볼일 때만 작동합니다. 값에 접근하려면 대괄호와 함께 심볼을 사용하세요:
person = {name: "Alice", age: 25}
puts person[:name] # 출력: Alice
puts person[:age] # 출력: 25항목 추가 및 수정은 동일한 방식으로 작동합니다:
person = {name: "Alice"}
person[:city] = "Paris"
person[:name] = "Bob"
puts person # 출력: {:name=>"Bob", :city=>"Paris"}심볼은 문자열보다 비교가 빠르고 메모리를 적게 사용하므로 해시 키로 선호됩니다. 루비 코드 전반에서 이러한 패턴을 자주 접하게 될 것이므로, 익숙해지는 것이 좋습니다.
챌린지
쉬움세 줄의 입력을 읽으십시오:
- 자동차 브랜드 (문자열)
- 모델 이름 (문자열)
- 연식 (정수)
다음 키-값 쌍을 포함하는 심볼 단축 구문(예: key: value)을 사용하여 car라는 해시를 생성하십시오:
:brand: 자동차 브랜드에 매핑:model: 모델 이름에 매핑:year: 연식(정수)에 매핑
그런 다음 다음 작업을 수행하십시오:
:model키의 값을 출력하십시오- 값이
"black"인 새로운 키:color를 추가하십시오 :year키의 현재 값에 1을 더하여 업데이트하십시오- 최종 해시를 출력하십시오
예를 들어, 입력값이 Toyota, Camry, 2020인 경우 출력은 다음과 같아야 합니다:
Camry
{:brand=>"Toyota", :model=>"Camry", :year=>2021, :color=>"black"}입력값이 Honda, Civic, 2018인 경우 출력은 다음과 같아야 합니다:
Civic
{:brand=>"Honda", :model=>"Civic", :year=>2019, :color=>"black"}입력값이 Ford, Mustang, 2023인 경우 출력은 다음과 같아야 합니다:
Mustang
{:brand=>"Ford", :model=>"Mustang", :year=>2024, :color=>"black"}치트 시트
Ruby는 심볼 키를 사용하여 해시를 생성하는 단축 구문을 제공합니다:
person = {name: "Alice", age: 25, city: "Paris"}이것은 심볼과 함께 해시 로켓(hash rocket) 구문을 사용하는 것과 동일합니다:
person = {:name => "Alice", :age => 25, :city => "Paris"}심볼 키를 가진 해시에서 값에 접근하려면, 심볼과 함께 대괄호를 사용하세요:
puts person[:name] # 출력: Alice
puts person[:age] # 출력: 25항목을 추가하고 수정하는 방식은 문자열 키를 사용할 때와 동일합니다:
person[:city] = "Paris" # 새로운 키-값 쌍 추가
person[:name] = "Bob" # 기존 값 수정심볼은 문자열보다 비교가 빠르고 메모리를 적게 사용하기 때문에 해시 키로 선호됩니다.
직접 해보기
# 입력 읽기
brand = gets.chomp
model = gets.chomp
year = gets.chomp.to_i
# TODO: 아래에 코드를 작성하세요
# 1. :brand, :model, :year 키를 사용하여 심볼 단축 구문으로 'car'라는 해시를 생성하세요
# 2. :model 키의 값을 출력하세요
# 3. 값이 "black"인 새로운 키 :color를 추가하세요
# 4. :year 키의 현재 값에 1을 더하여 업데이트하세요
# 5. 최종 해시를 출력하세요이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.