gpt4 book ai didi

c# - 在 Ruby 中,什么相当于 C# 中的接口(interface)?

转载 作者:IT王子 更新时间:2023-10-29 04:32:56 27 4
gpt4 key购买 nike

我目前正在尝试学习 Ruby,并且我正在尝试更多地了解它在封装和契约方面提供的功能。

在 C# 中,可以使用接口(interface)定义契约。实现接口(interface)的类必须通过为定义的每个方法和属性(可能还有其他东西)提供实现来满足契约(Contract)中的条款。实现接口(interface)的单个​​类可以在契约定义的方法范围内做任何它需要的事情,只要它接受相同类型的参数并返回相同类型的结果。

有没有办法在 Ruby 中强制执行这种操作?

谢谢

A simple example of what I mean in C#:

interface IConsole
{
int MaxControllers {get;}
void PlayGame(IGame game);
}

class Xbox360 : IConsole
{
public int MaxControllers
{
get { return 4; }
}

public void PlayGame(IGame game)
{
InsertDisc(game);
NavigateToMenuItem();
Click();
}
}

class NES : IConsole
{
public int MaxControllers
{
get { return 2; }
}

public void PlayGame(IGame game)
{
InsertCartridge(game);
TurnOn();
}
}

最佳答案

ruby 中没有接口(interface),因为 ruby​​ 是一种动态类型的语言。接口(interface)基本上用于在不破坏类型安全的情况下使不同的类可以互换。您的代码可以与每个控制台一起使用,只要它的行为类似于在 C# 中表示实现 IConsole 的控制台。 “鸭子打字”是一个关键字,您可以使用它来了解处理此类问题的动态语言方式。

此外,您可以而且应该编写单元测试来验证代码的行为。每个对象都有一个 respond_to? 方法,您可以在断言中使用。

关于c# - 在 Ruby 中,什么相当于 C# 中的接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3505521/

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