RubyMonk section 8.1에 따르면 모듈은 동작을 유지하고 상태는 유지하지 않으며 클래스는 동작과 상태를 유지할 수 있습니다.Ruby의 모듈과 클래스. 모순?
그러나 모듈은 Ruby의 수퍼 클래스입니다. 어떻게 이럴 수있어?
RubyMonk section 8.1에 따르면 모듈은 동작을 유지하고 상태는 유지하지 않으며 클래스는 동작과 상태를 유지할 수 있습니다.Ruby의 모듈과 클래스. 모순?
그러나 모듈은 Ruby의 수퍼 클래스입니다. 어떻게 이럴 수있어?
인용 한 내용이 실제로 그 출처가 밝히는 내용이면 정확성이 부족합니다. 기간의 정확한 사용 하에서, 참으로 모순이다.
그러나 사람들은 Module
이라는 용어를 사용하여 "Module
은 Class
"이 아닙니다. 이 의미에서 어떤 의미인지는 모순이 아닌 것으로 써 있습니다.
모듈은 BRU,
module Foo
@state = "a"
def self.state
@state
end
def self.stateful
@state = "b"
end
end
봐 상태를 가질 수 있습니다!
Foo.state # a
Foo.stateful # b
Foo.state # b
오 형제, 당신은 모듈/클래스 인스턴스 변수와 모듈/클래스 메소드에 대해 잊어 버린 경우, 당신도 클래스가 상태를 유지하는 것이 말할 수 없다 - 그것은 상태를 유지 클래스의 인스턴스를 때문에. 클래스에는 인스턴스 메서드 목록이 있습니다. 클래스의 전체 섹션도 기술적으로 잘못되었습니다.
결론은 루비의 객체 중 99.99 %가 객체이고 모든 객체가 상태를 유지할 수 있다는 것입니다. 클래스는 객체 (객체 생성자)이고 모듈은 객체 (객체 생성자는 아님)이며 클래스의 인스턴스는 객체입니다.
나는 국가에 대해 걱정하지 말 것을 제안합니다. 네임 스페이스로서
1) : 단지 두 가지 모듈에 사용될 수 있다는 사실에 집중
module MyFunctions
def MyFunctions.puts(str) #...or: def self.puts(str)
Kernel.puts "***" + str
end
end
puts 'hello'
MyFunctions.puts 'hello'
--output:--
hello
***hello
2) 방식의 패키지로가 포함되는 것으로, 예를 들어 수업 중 :
module AnimalTricks
def speak
puts @noise
end
end
class Dog
include AnimalTricks
def initialize
@noise = "woof"
end
end
class Mouse
include AnimalTricks
def initialize
@noise = "sqeak"
end
end
Dog.new.speak
Mouse.new.speak
--output:--
woof
sqeak
* 친구 * 의심의 여지가 있습니다. 도와 줄래 ? 나는 [File # ctime] (http://www.ruby-doc.org/core-2.0.0/File.html#method-i-ctime)과 [File # mtime] (http : //www.ruby-doc.org/core-2.0.0/File.html#method-i-time). 당신이 나를 도울 수 ? :) –