2011-03-31 2 views

답변

32

이미 YARV에서 구현되었으며 Ruby 2.0에서 가장 많이 사용되는 두 가지 기능은 특성 (mix)과 Module#prepend입니다.

mix 방법은 현재 include 방법과 달리, 모듈의 목록 소요되며, 그들이 충돌하는 방법이 없다는 것을 확인하고, 동시에 그들 모두를에 혼합합니다. 또한 충돌을 쉽게 해결할 수있는 방법을 제공합니다 (예 : 믹스하려는 두 모듈은 같은 방법을 정의합니다. 따라서 기본적으로 include 메서드를 사용하면 모듈을 믹스 인으로 처리 할 수 ​​있지만 mix 메서드를 사용하면 모듈을 특성으로 처리 할 수 ​​있습니다.

Module#prependinclude가 있지만, 대신 상기 클래스, 그것이 삽입 상속 체인으로 삽입하지 다시 것처럼 단지 아래 클래스, 클래스 또는 모듈로 모듈을 혼합. 즉, 모듈의 메서드는 클래스의 메서드를 재정의 할 수 있으며 super이라는 재정의 된 메서드에 위임 할 수 있습니다. 둘 다 include을 사용할 때는 불가능합니다. 기본적으로 alias_method_chain은 사용되지 않습니다.

몇 달 (또는 카운트 방법에 따라 10 년) 동안 논의 된 기능 중 하나는 상세 검색입니다. 10 년이 넘는 기간 동안 Ruby에서 범위와 안전한 원숭이 패치를 수행하는 방법을 추가하기위한 논의가있었습니다. 나는. 원숭이가 핵심 클래스를 패치 할 수있는 방법이지만 내 코드 만이 원숭이 패치를보고 다른 코드는 그렇지 않습니다. 수년 동안 안전한 원숭이 패칭의 선두 주자는 Selector Namespaces 였지만 최근에는 Classboxes가 많은 주목을 받고 있으며 최근에는 Classbox의 변형 인 Refinements의 프로토 타입 구현 및 사양이 추가되었습니다 앞으로.

일반적으로 말해서 Ruby 2.0의 큰 테마는 더 큰 팀, 더 큰 코드베이스, 더 큰 문제 크기, 더 큰 머신, 더 많은 코어에 대한 up =의 확장 성입니다. 또한 임베디드 장치와 같은 소형 시스템의 경우 으로 축소합니다.

위에서 언급 한 세 가지 기능은 더 큰 팀과 더 큰 코드베이스로 확장하는 것입니다. 더 큰 문제 크기와 더 많은 코어로 확장하기위한 몇 가지 제안 된 기능은 map과 같은 병렬 수집 및 Enumerable 메서드의 병렬 구현뿐 아니라 미래, 약속, 에이전트, 액터, 채널, 조인 패턴 등과 같은 더 나은 동시성 추상화입니다.

+0

+1 매우 철저한 대답입니다. – DJTripleThreat

+0

+1 좋은 답변에 감사드립니다. – murrekatt