Ruby에서 기존 해시에 추가하는 방법
key => value
Ruby의 기존 채워진 해시에 쌍 을 추가하는 것과 관련하여 Apress의 Beginning Ruby를 통해 작업하는 중이며 해시 장을 방금 마쳤습니다.
해시로 동일한 결과를 얻을 수있는 가장 간단한 방법을 찾으려고합니다.
x = [1, 2, 3, 4]
x << 5
p x
해시가있는 경우 키로 참조하여 항목을 추가 할 수 있습니다.
hash = { }
hash[:a] = 'a'
hash[:a]
# => 'a'
여기서는 [ ]
빈 배열 { }
을 만드는 것과 같이 빈 해시를 만듭니다.
배열에는 특정 순서로 0 개 이상의 요소가 있으며 요소가 중복 될 수 있습니다. 해시에는 key로 구성된 0 개 이상의 요소 가 있습니다. 여기서 키는 복제되지 않지만 해당 위치에 저장된 값은 복제 될 수 있습니다.
Ruby의 해시는 매우 유연하며 던질 수있는 거의 모든 유형의 키를 가질 수 있습니다. 이것은 다른 언어에서 찾을 수있는 사전 구조와 다릅니다.
해시 키의 특정 특성이 종종 중요하다는 점을 기억하는 것이 중요합니다.
hash = { :a => 'a' }
# Fetch with Symbol :a finds the right value
hash[:a]
# => 'a'
# Fetch with the String 'a' finds nothing
hash['a']
# => nil
# Assignment with the key :b adds a new entry
hash[:b] = 'Bee'
# This is then available immediately
hash[:b]
# => "Bee"
# The hash now contains both keys
hash
# => { :a => 'a', :b => 'Bee' }
Ruby on Rails는 HashWithIndifferentAccess를 제공하여 Symbol과 String 주소 지정 방법간에 자유롭게 변환 할 수 있도록하여이를 다소 혼동합니다.
클래스, 숫자 또는 기타 해시를 포함하여 거의 모든 항목에 대해 색인을 생성 할 수도 있습니다.
hash = { Object => true, Hash => false }
hash[Object]
# => true
hash[Hash]
# => false
hash[Array]
# => nil
해시는 배열로 또는 그 반대로 변환 할 수 있습니다.
# Like many things, Hash supports .to_a
{ :a => 'a' }.to_a
# => [[:a, "a"]]
# Hash also has a handy Hash[] method to create new hashes from arrays
Hash[[[:a, "a"]]]
# => {:a=>"a"}
해시에 "삽입"하는 경우 한 번에 하나씩 수행하거나 merge
방법을 사용하여 해시를 결합 할 수 있습니다 .
{ :a => 'a' }.merge(:b => 'b')
# {:a=>'a',:b=>'b'}
Note that this does not alter the original hash, but instead returns a new one. If you want to combine one hash into another, you can use the merge!
method:
hash = { :a => 'a' }
# Returns the result of hash combined with a new hash, but does not alter
# the original hash.
hash.merge(:b => 'b')
# => {:a=>'a',:b=>'b'}
# Nothing has been altered in the original
hash
# => {:a=>'a'}
# Combine the two hashes and store the result in the original
hash.merge!(:b => 'b')
# => {:a=>'a',:b=>'b'}
# Hash has now been altered
hash
# => {:a=>'a',:b=>'b'}
Like many methods on String and Array, the !
indicates that it is an in-place operation.
my_hash = {:a => 5}
my_hash[:key] = "value"
If you want to add more than one:
hash = {:a => 1, :b => 2}
hash.merge! :c => 3, :d => 4
p hash
x = {:ca => "Canada", :us => "United States"}
x[:de] = "Germany"
p x
hash = { a: 'a', b: 'b' }
=> {:a=>"a", :b=>"b"}
hash.merge({ c: 'c', d: 'd' })
=> {:a=>"a", :b=>"b", :c=>"c", :d=>"d"}
Returns the merged value.
hash
=> {:a=>"a", :b=>"b"}
But doesn't modify the caller object
hash = hash.merge({ c: 'c', d: 'd' })
=> {:a=>"a", :b=>"b", :c=>"c", :d=>"d"}
hash
=> {:a=>"a", :b=>"b", :c=>"c", :d=>"d"}
Reassignment does the trick.
hash {}
hash[:a] = 'a'
hash[:b] = 'b'
hash = {:a => 'a' , :b = > b}
You might get your key and value from user input, so you can use Ruby .to_sym can convert a string to a symbol, and .to_i will convert a string to an integer.
For example:
movies ={}
movie = gets.chomp
rating = gets.chomp
movies[movie.to_sym] = rating.to_int
# movie will convert to a symbol as a key in our hash, and
# rating will be an integer as a value.
참고URL : https://stackoverflow.com/questions/6863771/how-to-add-to-an-existing-hash-in-ruby
'developer tip' 카테고리의 다른 글
C / C ++ 매크로의 쉼표 (0) | 2020.08.29 |
---|---|
Devise에서 사용자의 비밀번호를 확인하는 방법 (0) | 2020.08.29 |
glyphicons-halflings-regular.woff2 찾을 수 없음에 대한 오류를 제거하는 방법 (0) | 2020.08.29 |
APNS 장치 토큰이 생성되면 변경됩니까? (0) | 2020.08.29 |
JQuery UI 자동 완성 도우미 텍스트를 제거 / 변경하는 방법은 무엇입니까? (0) | 2020.08.29 |