HOWTO · Ruby
루비로 확장
이 튜토리얼에서는 Ruby에서 포함 및 확장에 대해 설명합니다.
이 페이지의 내용
클래스에서 클래스로, 함수에서 함수로 참조하는 것은 객체 지향 프로그래밍에서 일반적인 작업입니다. 다른 클래스에서 모듈을 가져오는 방법을 찾고 있다면 이 문서가 도움이 될 수 있습니다.
Ruby에서는 두 가지 방법으로 이 작업을 수행할 수 있습니다. include 또는 extend를 사용합니다.
이 기사에서는 Ruby의 include 및 extend에 대해 논의하고 주제를 더 쉽게 만들기 위해 관련 예제를 살펴봅니다.
Ruby에서 “포함"이란 무엇입니까?
include를 사용하면 코드 모듈을 가져올 수 있습니다. 클래스를 통해 모듈을 직접 가져오는 방법을 얻으려고 하면 슈퍼클래스에 대한 하위 클래스로 가져오기 때문에 오류가 발생합니다.
여기서 해결책은 클래스의 인스턴스로 가져오는 것입니다. include 키워드를 사용하여 include를 사용할 수 있습니다.
Ruby에서 확장이란 무엇입니까?
모듈을 가져오는 또 다른 방법은 extend 키워드를 사용하는 것입니다. extend를 통해 메서드를 클래스 메서드로 가져올 수 있습니다.
그러나 인스턴스를 통해 가져온 모듈의 메서드를 가져오려고 하면 오류가 발생합니다. 이 오류를 방지하려면 클래스 정의에서 해당 메서드를 가져와야 합니다.
Ruby에서 include 및 extend 사용
아래 예에서는 Ruby에서 include 및 extend 키워드의 사용을 설명합니다. 아래 예제 코드를 살펴보십시오.
module MyModule
def MyMethod
puts 'DelftStack is nice.'
end
end
class ClassA
# only can access MyModule methods
# By the instance.
include MyModule
end
class ClassB
# only can access MyModule methods
# By the class definition.
extend MyModule
end
# Access from the object
ClassA.new.MyMethod
# Acess from class
ClassB.MyMethod
각 줄의 목적은 주석 처리되고 include 및 extend 키워드의 작동 메커니즘에 대해 설명합니다. 위의 예제 코드를 실행하면 아래와 같은 결과를 얻을 수 있습니다.
DelftStack is nice.
DelftStack is nice.
이제 아래와 같이 클래스에서 직접 메서드에 액세스하려고 하면 다음과 같습니다.
ClassA.MyMethod
아래와 같은 오류가 표시됩니다.
# NoMethodError: undefined method
# `MyMethod' for ClassA:Class
ClassA는 include 키워드를 사용하는 모듈을 포함하고 include는 클래스에서 직접 메서드를 호출할 수 없기 때문입니다.