이 경우 hash1과 hash2는 분명히 동일한 객체가 아닌데 왜 Assert_equal을 주장할 수 있나요?
으아아아이 경우 예상 및 new_hash가 기다리지 않는 이유는 무엇입니까?
또 하나 있는데 설명해 주세요.
으아아아이 문장은 무슨 뜻인가요? 이 구문은 어떻게 되나요? 세 개의 해시가 동일합니까?
伊谢尔伦2017-04-24 16:01:46
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
입니다. >