내 자신의 라이브러리를 개발하는 과정에서 일반적인 숙어를 이해하기 위해 Github에서 다양한 Ruby 라이브러리를 읽었습니다. 내가 참조한 한 라이브러리 (found here)는 "첨부되지 않은 메소드 보내기"를 활용합니다. 여기 코드는 : 나는 루비의 전송 방법에 관한 온라인으로 찾을 수 있습니다Ruby에서 연결되지 않은 send 메소드를 사용하는 적절한 방법은 무엇입니까?
module AngellistApi
class API
attr_accessor *Configuration::VALID_OPTIONS_KEYS
# Creates a new API
def initialize(options={})
options = AngellistApi.options.merge(options)
Configuration::VALID_OPTIONS_KEYS.each do |key|
send("#{key}=", options[key])
end
end
end
end
모든 문서는, 문자열이나 기호를 통해 객체의 메소드를 호출하는 방법으로 그것을 설명합니다. 그러나 모든 예제에는 객체에 send 메소드가 있습니다. 예 :
object.send(:method_name, argument1)
객체에 첨부되지 않은 경우 어떻게됩니까? 이 경우 호출 된 클래스의 메서드를 호출하고 있습니까? 누군가 나를 위해이 코드를 설명 할 수 있습니까? :)
아 아아 ... 전화 키의 구성 요소를 놓쳤습니다 ... 훌륭합니다 ... 감사합니다! –
빠른 질문 하나 ... 그 변수가 그 시점에서 인스턴스 변수가된다고 가정합니다. –
이 경우 yes는 클래스가 유효한 옵션 키를 기반으로 한 attr_accessors를 정의하기 때문입니다. 예제에서와 같이': foo => 'bar''를 전달하고'foo'가 유효한 키라면 객체에'@ foo' 인스턴스 변수가 생깁니다. 'foo'가 유효한 키가 아니라면, 객체를 초기화하려고 할 때'NoMethodError'를 얻습니다. – numbers1311407