Oneliner 일반 루비, 루비> 1.9.x에서만 작동합니다.
1.9.3p0 :002 > h = {:a => 1, :b => 2}
=> {:a=>1, :b=>2}
1.9.3p0 :003 > h.tap { |hs| hs.delete(:a) }
=> {:b=>2}
Tap 메소드는 항상 호출 된 객체를 반환합니다 ...
그렇지 않으면 필요한 경우 active_support/core_ext/hash
(모든 Rails 애플리케이션에서 자동으로 필요함) 필요에 따라 다음 방법 중 하나를 사용할 수 있습니다.
➜ ~ irb
1.9.3p125 :001 > require 'active_support/core_ext/hash' => true
1.9.3p125 :002 > h = {:a => 1, :b => 2, :c => 3}
=> {:a=>1, :b=>2, :c=>3}
1.9.3p125 :003 > h.except(:a)
=> {:b=>2, :c=>3}
1.9.3p125 :004 > h.slice(:a)
=> {:a=>1}
제외 는 블랙리스트 접근 방식을 사용하므로 인수로 나열된 모든 키를 제거 하고 slice 는 화이트리스트 접근 방식을 사용하므로 인수로 나열되지 않은 모든 키를 제거합니다. 주어진 해시를 수정 하는 메소드 ( except!
및 slice!
) 의 뱅 버전도 있지만 반환 값이 다르면 둘 다 해시를 반환합니다. 제거 된 키 slice!
와 다음에 대해 유지되는 키를 나타냅니다 except!
.
1.9.3p125 :011 > {:a => 1, :b => 2, :c => 3}.except!(:a)
=> {:b=>2, :c=>3}
1.9.3p125 :012 > {:a => 1, :b => 2, :c => 3}.slice!(:a)
=> {:b=>2, :c=>3}