attr_accessor가 속성을 생성하지만 메소드는 단지 메소드가되는 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/3277885

  •  17-09-2020
  •  | 
  •  

문제

C #과 Ironruby 사이의 interop과 함께 놀고 있습니다.attr_accessor를 사용하여 Ruby에서 속성을 정의하면 C #에 C #이 제공됩니다.반면에, 똑같은 코드를 수동으로 생성하면 메서드로 돌아옵니다.

예를 들어,이 코드를 가져 가라 :

var engine = IronRuby.Ruby.CreateEngine();
string script = @"
  class Test
    attr_accessor :automatic

    def manual
      @manual
    end

    def manual=(val)
      @manual = val
    end

    def initialize
      @automatic = ""testing""
      @manual = ""testing""
    end
  end

  Test.new
";
var testObject = engine.Execute(script);

var automatic = testObject.automatic;
var manual = testObject.manual;
.

C # automatic 변수를 볼 때 값은 "테스트"문자열입니다.C # manual 변수를 보면 IronRuby.builtins.RuvyMethod 유형입니다.

궁극적으로 C #에서 사용할 수있는 루비에서 내 자신의 속성을 만들고 싶지만 attr_accessor와 같은 속성으로 표시되는 것으로 보이는 것 같습니다.

나는 루비 소스 코드의 모듈 코드 (moduleops.cs : defineAccessor)의 모듈 코드에서 어떤 마술을가는 것입니다.루비 코드에서 직접이를 수행 할 수있는 방법이 있습니까?

도움이 되었습니까?

해결책

이 특별한 문제는 Ironruby-Core 스레드에서 더 자세히 설명되었다. http://rubyforge.org/pipermail/rubyforge-core/2010-7 월 / 007154.html

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top