최고의 루비 모듈 (모듈) 튜토리얼 2024년, 이 튜토리얼에서는 루비는문을 필요로,루비는문을 포함,유지 mixin 루비,를 배울 수 있습니다.
모듈 (모듈) 방법, 수업에 대한 방법이며, 상수 방식을 결합했다. 모듈 (모듈) 두 가지 이점을 제공합니다.
모듈 (모듈) 네임 스페이스, 샌드 박스에 해당하는 정의, 당신의 방법과 상수는 상수와 다른 곳에서 갈등의 방법은 아니다.
유사한 클래스를 모듈,하지만 다른 모습 :
module Identifier statement1 statement2 kokokokoko. end
모듈 이름 상수와 클래스 상수 마찬가지로 대문자로 시작하는 이름. 클래스 메소드 정의를 정의하는 유사한 모듈 식 접근 : 방법 정의는 것 같습니다.
클래스 방법으로하면, 모듈 이름, 모듈 방식을 호출하는 메소드의 클래스 이름 앞에 도트를 배치 할 수는 상수를 참조 모듈 이름 및 두 개의 콜론을 사용할 수있다.
#!/usr/bin/ruby # 定义在 trig.rb 文件中的模块 module Trig PI = 3.141592654 def Trig.sin(x) # ko end def Trig.cos(x) # ko end end
우리는 이름은 같지만 서로 다른 기능 모듈과 여러 기능을 정의 할 수 있습니다 :
#!/usr/bin/ruby # 定义在 moral.rb 文件中的模块 module Moral VERY_BAD = 0 BAD = 1 def Moral.sin(badness) # ko. end end
당신이 모듈에서하는 방법을 정의 할 때 클래스 메소드와 마찬가지로, 당신은 점은 메소드 이름 다음에 후 점 다음에 모듈 이름을 지정할 수 있습니다.
문은 C 및 C ++과 유사 필요로하며, 자바 import 문에서 문을 포함한다. 당신이 모듈 중 하나를 사용하려면 타사 프로그램이 정의 된 경우, 당신은 단순히 모듈 파일을로드루비 문을필요로 사용할 수 있습니다 :
require filename
여기에서, 파일 확장자는 필요하지.rb.
$ LOAD_PATH << '.' 'trig.rb을'필요 필요 '도덕적' Y = Trig.sin (삼각 :: / 4 PI) 잘못 = Moral.sin (도덕적 :: VERY_BAD)
여기, 우리는$ LOAD_PATH를 << 사용 '.'루비는우리가 현재 디렉토리에 참조 된 파일을 검색해야 함을 알려주십시오. 당신이 $의 LOAD_PATH을 사용하지 않으려면, 당신은 상대 디렉토리의 파일을 참조require_relative 사용할 수 있습니다.
참고 : 여기에, 파일은 동일한 기능의 이름이 포함되어 있습니다.따라서, 호출 프로그램을 언급하지만,이 코드 모듈 난독 화를 피할 때 난독 초래할 것이며, 우리는 해당 함수를 호출하는 모듈의 이름을 사용할 수있다.
당신은 클래스 모듈을 포함 할 수 있습니다. 클래스 모듈에 포함하기 위해, 당신은 당신의 클래스에 문을포함사용할 수 있습니다 :
include modulename
만약 내장 모듈을 사용해야하기 전에요구되도록모듈이 별도의 파일로 정의 된 경우 문은 파일을 참조.
support.rb파일에 기록 된 다음 모듈 가정.
module Week FIRST_DAY = "Sunday" def Week.weeks_in_month puts "You have four weeks in a month" end def Week.weeks_in_year puts "You have 52 weeks in a year" end end
이제 다음과 같이 클래스에 모듈을 참조 할 수 있습니다 :
#!/usr/bin/ruby $LOAD_PATH << '.' require "support" class Decade include Week no_of_yrs=10 def no_of_months puts Week::FIRST_DAY number=10*12 puts number end end d1=Decade.new puts Week::FIRST_DAY Week.weeks_in_month Week.weeks_in_year d1.no_of_months
이것은 다음과 같은 결과를
Sunday You have four weeks in a month You have 52 weeks in a year Sunday 120
이 섹션을 읽기 전에, 당신은 객체 지향 개념의 예비 이해가 필요합니다.
기능 클래스는 클래스 다중 상속으로 표시됩니다, 상속 때 때 클래스는 하나 이상의 상위 클래스가 될 수 있습니다.
루비는 직접 다중 상속을 지원하지 않지만 루비의 모듈 (모듈) 다른 훌륭한 기능을 가지고 있습니다. 이것은 사실상 다중 상속에 대한 필요성을 제거하는장치가 믹스 인 호출이 제공된다.
루비는 정말 다중 상속 메커니즘을 달성하지만, 대신 믹스 인 기술로 채택하지 않습니다. 이 모듈은 클래스 정의 클래스에 혼합 할 수있는 모듈 방식을 포함한다.
이제 다음 예제 코드를 살펴 보자, 깊이있는 믹스 인의 이해 :
module A def a1 end def a2 end end module B def b1 end def b2 end end class Sample include A include B def s1 end end samp=Sample.new samp.a1 samp.a2 samp.b1 samp.b2 samp.s1