Weak Boxes
Weak Boxes
약한 박스(weak box)는 일반 박스(Boxes 문서 참고)와 비슷하지만, 가비지 컬렉터(Garbage Collection 문서 참고)가 약한 박스의 내용 값이 오직 약한 참조(weak reference)를 통해서만 도달 가능하다고 증명할 수 있으면, 그 약한 박스의 내용이 #f로 교체돼요. 약한 참조는 약한 박스 통한 참조, 약한 해시 테이블(Hash Tables 문서 참고)의 키 참조, 값이 #f로 교체될 수 있는 에페메론(ephemeron, Ephemerons 문서 참고)의 값, 또는 커스토디언(custodian, Custodians 문서 참고)을 통한 참조를 말해요.
출처: Racket Reference
본문
(make-weak-box v) → weak-box?
v : any/c
처음에 v를 담고 있는 새 약한 박스를 돌려줘요.
(weak-box-value weak-box [gced-v]) → any/c
weak-box : weak-box?
gced-v : any/c = #f
weak-box에 담긴 값을 돌려줘요. 가비지 컬렉터가 weak-box의 이전 내용 값이 오직 약한 참조를 통해서만 도달 가능했다고 증명했다면, gced-v(기본값 #f)가 돌려져요.
(weak-box? v) → boolean?
v : any/c
v가 약한 박스이면 #t, 그렇지 않으면 #f를 돌려줘요.