谁能解释一下?-6ren"> 谁能解释一下?-我正试图全神贯注于 Ruby,而我正在努力解决的一件事是缺乏接口(interface)/抽象类支持。通过谷歌搜索,我不断看到与抽象类相关的 Ruby 问题的响应是“你在用 Java 思考。Ruby 不-6ren">
gpt4 book ai didi

ruby - "Interfaces & Abstract Classes unnecessary in Ruby"--> 谁能解释一下?

转载 作者:数据小太阳 更新时间:2023-10-29 06:35:45 25 4
gpt4 key购买 nike

我正试图全神贯注于 Ruby,而我正在努力解决的一件事是缺乏接口(interface)/抽象类支持。通过谷歌搜索,我不断看到与抽象类相关的 Ruby 问题的响应是“你在用 Java 思考。Ruby 不能那样工作”

那么,如果没有接口(interface)/抽象类,如何在 Ruby 中工作呢?

例如,在 Java 中我可能会创建一个抽象类“book”,其子类为“novel”、“textbook”和“journal”。我在“书”中加入了很多常用功能,但我不希望它可以直接访问 - 书必须是小说、教科书或期刊。

在 ruby​​ 中,我该如何写出那种功能?

最佳答案

我也是Ruby初学者。根据我的理解,ruby 中的抽象类有一个更接近的竞争对手。那就是模块。您不能创建模块的任何实例,但可以包含在另一个类中。所以目标类将获得父类的全部功能

  module Log
def write
//blah
end
end

class EventLog
include Log

def Prepare
end
end

在 java/C# 等静态类型语言中,接口(interface)强制类在编译时拥有所有方法。由于 Ruby 是动态的,因此没有任何意义。

为了更清楚,查看这些帖子为什么动态语言不需要接口(interface)..

  1. why-dont-we-require-interfaces-in-dynamic-languages
  2. why-do-dynamic-languages-like-ruby-and-python-not-have-the-concept-of-interfaces

干杯

关于ruby - "Interfaces & Abstract Classes unnecessary in Ruby"--> 谁能解释一下?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5076933/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com