문제
이것은 꽤 오랫동안 나를 괴롭 히고 있습니다.
>> nil.id
(irb):2: warning: Object#id will be deprecated; use Object#object_id
=> 4
NIL.ID가 4 인 이유는 무엇입니까? (또는 감가 상각에 대해 까다 롭고 싶다면 nil.object_id)
해결책
NIL은 언어가 초기화 될 때 생성 된 객체이며 해당 객체의 ID는 항상 4입니다.
신분증이 4 인 이유에 대한 자세한 내용은 이것 블로그 게시물.
다른 팁
나는 항상 그것이 시원한 부활절 달걀이라고 생각했다. 일본에서 4 명은 죽음의 수이다.
모든 객체의 ID가 어떻게 든 C Ruby 통역사에 표시되어야했기 때문에 발생합니다. 숫자는 (숫자*2) +1에 매핑되었고, 진실성은 0, 거짓은 2를 얻었고 Nil은 4 왼쪽을 가졌습니다. 그것은 단지 이상한 구현 문제 또는 유출 된 추상화 일뿐입니다. 루비 통역사를 쓰고 싶지 않으면 걱정하지 않아야합니다.
IRB에서 이것을 시도하고 있다면 4
irb
>> NIL.id
(irb):7: warning: Object#id will be deprecated; use Object#object_id
=> 4
루비 일본인에서 NIL 방법을 설정하는 일본인은 4를 반환합니다.
제휴하지 않습니다 StackOverflow