Ruby 객체 프로그래밍에서의 클래스 방법 및 클래스 확장

1600 단어 Ruby종류방법
유형 방법
유형 방법의 실질은 이 유형의 단일 유형에 사는 단일 방법이다.그 정의 방법은 다음과 같은 세 가지가 있습니다.

#  
def MyClass.a_class_method; end


#  
class MyClass
  def self.anther_class_method; end
end


#  *
class MyClass
  class << self
    def yet_another_class_method; end
  end
end

그 중에서 세 번째 방법은 다음과 같다. 유형 방법의 실질, 특히 기억해라!
클래스 확장
클래스 확장은 클래스의 단일 클래스에 모듈을 추가하여 클래스 방법을 정의합니다.

module MyModule
  def my_method; ‘hello'; end
end

class MyClass
  class < self
    include MyModule
  end
end

MyClass.my_method

위 코드는 구체적인 클래스 확장의 실현 방식을 보여 줍니다. MyModule 모듈을 MyClass 클래스의 단일 클래스에 도입합니다. 왜냐하면 my_method 방법은 MyClass의 단일 클래스의 실례적인 방법입니다. 이렇게, my_method 방법도 MyClass의 한 가지 방법이다.
개체 확장
클래스 방법은 단일 방법의 특례이기 때문에 클래스 확장이라는 기교를 임의의 대상에 응용할 수 있다. 이런 기교는 바로 대상을 확장하는 것이다
 

#  :  
module MyModule
  def my_method; ‘hello'; end
end

obj = Object.new
class << obj
  include MyModule
end

obj.my_method  # => “hello”
obj.singleton_methods  # => [:my_method]
#  :Object#extend 
module MyModule
  def my_method; ‘hello'; end
end

obj = Object.new
# 
obj.extend MyModule
obj.my_method  # => “hello” 
# 
class MyClass
  extend MyModule
end

MyClass.my_method # => “hello”

Object#extend는 수용자의 단일 클래스에 모듈을 포함하는 단축키 방식입니다.

좋은 웹페이지 즐겨찾기