1, Hash#== 방식, 두 해시의 키-값 쌍 개수가 같고, 자체 #== 방식에 따라 키-값 쌍이 동일하면 두 해시가 동일합니다
설명:
:one=>1은 키-값 쌍이고, :one는 키인 기호이고, 1은 값인 정수입니다. 즉, Ruby의 기호는 전역적으로 고유합니다. , :one은 하나만 있는데, 당연히 서로 같고, 1은 정수이고, 평등 판단도
매우 직관적입니다.
Ruby에서
평가에서 #== 메서드는 의미론적 동일성을 제공하기 위해 하위 클래스에 의해 재정의됩니다. 예를 들어 1==1.0는 true이지만 #equal?은 재정의가 금지됩니다. 비교 대상은 #object_id, 즉 동일한 대상만 equal입니다. 예를 들어 1.equal? 1.0은 false입니다. 질문자는 #equal?이라고 말해야 합니다.
2, Hash#merge 메소드(예: h1.merge h2)는 동일한 키에 대해 h1을 h2로 덮어씁니다. 즉, new_hash["jim"]은 54입니다. 또는 h2 merge h1의 값을 원합니다.
으아아아
h13,
은
과 같이 존재하지 않는 키를 인덱싱할 때 해시가 어떤 값을 반환해야 하는지를 주로 다룹니다. 여기서 Hash.new에서 hash1['not_exist_key']는 |hash, key|입니다. 호출 객체는 hash입니다. 이 문의 의미는 존재하지 않는 키가 인덱싱되면 빈 배열 hash1이 반환된다는 것입니다. 이를 작성하는 더 간단한 방법은 key입니다. >
1,
Hash#==
방식, 두 해시의 키-값 쌍 개수가 같고, 자체#==
방식에 따라 키-값 쌍이 동일하면 두 해시가 동일합니다설명:
:one=>1
은 키-값 쌍이고,:one
는 키인 기호이고,1
은 값인 정수입니다. 즉, Ruby의 기호는 전역적으로 고유합니다. ,:one
은 하나만 있는데, 당연히 서로 같고,1
은 정수이고, 평등 판단도평가에서
#==
메서드는 의미론적 동일성을 제공하기 위해 하위 클래스에 의해 재정의됩니다. 예를 들어1==1.0
는true
이지만#equal?
은 재정의가 금지됩니다. 비교 대상은#object_id
, 즉 동일한 대상만equal
입니다. 예를 들어1.equal? 1.0
은false
입니다. 질문자는#equal?
이라고 말해야 합니다.2,
은Hash#merge
메소드(예:h1.merge h2
)는 동일한 키에 대해h1
을h2
로 덮어씁니다. 즉,new_hash["jim"]
은 54입니다. 또는h2 merge h1
의 값을 원합니다. 으아아아h1
3,과 같이 존재하지 않는 키를 인덱싱할 때 해시가 어떤 값을 반환해야 하는지를 주로 다룹니다. 여기서
Hash.new
에서hash1['not_exist_key']
는|hash, key|
입니다. 호출 객체는hash
입니다. 이 문의 의미는 존재하지 않는 키가 인덱싱되면 빈 배열hash1
이 반환된다는 것입니다. 이를 작성하는 더 간단한 방법은key
입니다. >한 jim은 53이고 다른 jim은 54이므로 예상 및 new_hash는 동일하지 않습니다!