gpt4 book ai didi

ruby - 如何找到 "essential"方法来提供 Ruby mixins 的接口(interface)?

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

问题标题的可怕之处是我要解决的问题。示例:

在 Ruby 中,Enumerable 是某种意义上的接口(interface),我可以实现某些东西并将其记录为:

def myfancymethod(please_pass_me_an_Enumerable_here)

但另一方面,Enumerable 是一种接口(interface)的放大,它以#each 作为其方法之一。如果我有课

class Foo
def each
:bar
end
end

对于那些不熟悉 Ruby 的人来说,如果你在一个类中混入 Enumerable 模块,你会得到许多只依赖于 #each 方法来提供诸如 #map 之类的方法, #select

我可以说我的 Foo 类是 Enumerable-able 或 Enumerable-compatible 还是什么?哪些术语描述了“成为可枚举对象需要什么?”、“你必须拥有#each”的答案

同样,在 Ruby 中

(Array.new.methods - Object.new.methods).size # 111

这是否意味着要伪造一个 Array 接口(interface),我必须实现 111 个方法?没办法,但我如何找出Array的“本质”是什么方法。它只是 #[]#[]=#size 吗?如何理解它?

最佳答案

我想到了这个词"contract" .例如,Enumerable 的契约是“给我 #each,我会给你这些奇特的方法”。

关于ruby - 如何找到 "essential"方法来提供 Ruby mixins 的接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10746199/

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