Ruby 코드를 실행하기위한 여러 가지 Ruby C API 함수가 있습니다. 대부분은 require
처럼 격리 된 바인딩에서 코드를 실행합니다. 그러나 그들 중 일부는 먼저 을 실행하기 전에 코드를 익명 모듈에 래핑합니다. 예를 들어, rb_load
은이 래핑을 원할지 여부에 대한 인수를 취합니다. rb_eval_string_wrap
은 단지 rb_eval_string_protect
이지만 줄 바꿈을 사용합니다. C에서익명 모듈을 사용하여 Ruby 배치하기
는, 포장은 다음과 같습니다
/* load in anonymous module as toplevel */
th->top_self = rb_obj_clone(rb_vm_top_self());
th->top_wrapper = rb_module_new();
rb_extend_object(th->top_self, th->top_wrapper);
이 일의 요점은 무엇입니까? 필자는 이러한 함수를 unwrapped equivalents와 함께 테스트했으며 결과는 항상 동일합니다. 내가 사용하고 있지 않은 유스 케이스가 있습니까?
안녕하세요, 1 년 동안 무작위 downvote 주셔서 감사합니다. – Max