내가 이해하는 것처럼, 인터페이스는 자바이다. 인터페이스를 구현하는 클래스를위한 메소드를 레이아웃하여 디자인을 시행하기위한 것이다. Ruby 모듈과도 같은 생각인가? Java의 인터페이스와 마찬가지로 Ruby에서 모듈을 인스턴스화 할 수 없습니다.Ruby 모듈이 자바 인터페이스와 동일한가요?
답변
저는 모듈을 C#의 확장 메소드와 비슷한 것으로 생각한다고 생각합니다. 실제로 다른 곳에 정의 된 기존 클래스에 기능을 추가하고 있습니다. C#이나 Java에는 정확한 아날로그가 없지만 구현이 인터페이스뿐만 아니라 파생되기 때문에 인터페이스로 생각하지 않을 것입니다.
루비의 모듈은 정적 클래스에 가깝습니다. 저는 Java 개발자는 아니지만, 이라고 생각하면 Java 인터페이스는 C# 인터페이스와 유사합니다. 즉, 계약을 정의하지만 구현은 정의하지 않습니다.
나는 루비에 대한 경험이 있지만, 비디오 게임 제작 (RGSS/2)에 있어서는 안된다. 나는 베테랑 루비 프로그래머가 알 수있는 많은 것들에 대해 무지하다고 확신한다.
''ruby'' 모듈''이''Java'' 정적 클래스' '와 같은 경우,'C#''네임 스페이스'와 같은'루비''모듈'입니까? – mmcrae
루비의 모듈은 다른 것들에 추가 할 수있는 약간의 범위/네임 스페이스입니다. 그것들은 두 가지 뚜렷하지만 관련된 목적을 위해 사용됩니다. 즉, 함께 속하는 많은 것들 (상수, 클래스 등)을 묶어서 다중 상속과 같은 다른 범위에 추가하는 것입니다.
예를 들어 Comparable 및 Enumerable 등의 모듈이 있으며 이러한 형용사가 적용될 경우 기대할 수있는 기능을 캡슐화합니다. 기본 정의 (Comparable의 두 인스턴스와 Enumerable의 반복자를 비교하는 메서드)를 제공하면 모듈을 가져 와서 전체 인터페이스로 찾을 수 있습니다.
한편 Net과 같은 모듈은 거의 없지만 클래스는 Net :: HTTP, Net :: FTP, Net :: SMTP 등과 같은 기능을 제공합니다.
가운데에는 수학이나 프로세스와 같은 것들이 있습니다.
- MarkusQ
짧은 대답은 아니오입니다.
Java/C# 인터페이스는 구현 클래스가 최소한 제공 할 메소드 서명을 정의합니다. 또한
:
- 루비 모듈 때문에 오리 타이핑의 그러한 계약이 없습니다.
- 모듈은 쉽게 재사용 할 수 있도록 일반적인 기능을 추출하는 방법 일뿐입니다. 가장 가까운 릴레이션은 C# 확장 메소드이지만 정적 컨텍스트에 존재하기 때문에 정확히 일치하지는 않습니다.
- 모듈은 기존 클래스에 상태를 추가 할 수 있습니다.
- 모듈
- 모듈 네임 스페이스 역할을 할 수 있습니다 정적 메서드를 가질 수
예 : 루비에서보기 모듈의 형식적인 관점에서
module SimpleConversation
class NamespacedExample
def poke
puts "ouch"
end
end
attr_accessor :partner_name
def converse
partner_name ||= "Slowpoke"
speak + "\n#{partner_name}: Yes they are"
end
def self.yay
puts "yay"
end
end
class Foo
include SimpleConversation
attr_accessor :name
def speak
name ||= "Speedy"
"#{name}: tacos are yummy"
end
end
x = Foo.new
x.name = "Joe"
x.partner_name = "Max"
puts x.speak
puts x.converse
y = SimpleConversation::NamespacedExample.new
y.poke
SimpleConversation.yay
는 "믹스 인"이라고 디자인 패턴을 구현합니다. http://en.wikipedia.org/wiki/Mixin
PHP 특성과 비교할 수 있습니다. 이러한 아키텍처는 다중 상속을 허용하지 않는 언어, 예를 들어, 다중 언어에서 유용합니다. Ruby, PHP.
- 1. 자바 목록 모듈이 특정 값
- 2. Corba는 SOA와 동일한가요?
- 3. 레일즈에서 실행되는 Ruby 클래스에 모듈이 포함되는시기는 언제입니까?
- 4. C#에 std :: nth_element가 동일한가요?
- 5. 프로듀서/소비자 모델이 액터와 동일한가요?
- 6. 자바에서 인터페이스와 @interface의 차이점은 무엇입니까?
- 7. Ruby 관점에서 자바 접근하기
- 8. 자바 상당의 Ruby ObjectSpace.each_object
- 9. 인터페이스와 같은 Google 캘린더
- 10. C# 인터페이스와 유니온 형식
- 11. 인터페이스와 JSON 직렬화 닷넷
- 12. 는 EJB를 원격 인터페이스와
- 13. 인터페이스와 추상 클래스
- 14. 개념은 인터페이스와 어떻게 다른가요?
- 15. 내가 주석 인터페이스와 새로운 오전 주요 자바 프로그램
- 16. "anova"(lm)가 rpart 객체와 동일한가요?
- 17. 셰이더 최적화 : 삼항 연산자가 분기와 동일한가요?
- 18. 소프트웨어 트랜잭션 메모리는 데이터베이스 트랜잭션과 동일한가요?
- 19. 어떤 모듈이
- 20. 자바 프로젝트에서 Ruby 코드를 재사용해야합니까?
- 21. 인터페이스와 구현을 일반 함수로 분리
- 22. C++ 인터페이스와 같은 클래스의 소멸자
- 23. 인터페이스와 추상 클래스의 장점은 무엇입니까?
- 24. 장고 관리 인터페이스와 피클 세트
- 25. VB 인터페이스와 linq-to-SQL
- 26. 그래픽을 Java의 사용자 인터페이스와 결합하십시오.
- 27. 자바 모듈이 c 모듈을 호출 할 수 있습니까?
- 28. Ruby : Hash.keys 및 Hash.values 메서드에서 반환하는 키/값의 순서는 무엇입니까?
- 29. difflib 모듈이 없습니다
- 30. Joomla 모듈이 apearing하지 않습니다
내 자신의 이익을 위해, 나는 나의 평가에 잘못 되었습니까? 그래서 지금까지 그걸 사용 해왔다. 어쩌면 나는 뭔가를 놓치고 있을지도 모른다. –
모듈을 Ruby 클래스에 포함하고 그 동작, 인스턴스 메소드를 최소한 상속받을 수 있습니다. http://www.ruby-doc.org/core/classes/Module.html을보십시오. – tvanfosson
사실입니다. 그 사실을 알았고, 저는 RPG 제작자에게 거의 사용하지 않았습니다. 고마워요, 지금 요점을 봅니다. –