문제

액세서 (Ruby Like Property)가 종료되지 않으면 부름을받는 루비 클래스에 추가 할 수있는 기본 방법이나 클래스 액세서가 있습니까? 그런 다음 액세서 코드를 작성하지 않고 액세서처럼 액세서리에 액세스 할 수있는 데이터베이스에서 읽은 배열 목록에서 답장을 위해 몇 가지 사용자 정의 코드를 작성할 수 있습니다 (데이터베이스에서 읽은 경우 알려지지 않은 경우).

루비 MRI 사용 1.9

고맙습니다!

도움이 되었습니까?

해결책

예, 그것은 호출됩니다 method_missing; 정의되지 않은 메소드가 사용될 때마다 호출됩니다. 이를 사용하여 액세서를 포함하여 원하는 방법을 추가하거나 모방 할 수 있습니다.

예를 들어, 이것을 던지면 a Hash 해시의 내용을 속성으로 취급 할 수 있습니다.

h = {}
def h.method_missing(*args)
    if args.length == 1
        self[args[0]]
      elsif args.length == 2 and args[0].to_s =~ /^(.*)=$/
        self[$1.intern] = args[1]
      else
        super
      end
    end

당신은 다음과 같이 씁니다.

h.bob = "Robert"

그리고

if h.bill == "William" ...

그리고 더 정상적인 것 외에도 h[:bob] = ... 스타일.

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