ruby中的模板方法

ruby中的模板方法,ruby,generics,Ruby,Generics,简单问题: 在java中,您可以定义: void myFunction<T>(T value) { //do stuff } void myFunction(T值){//do stuff} ruby中是否有一个等价物,如果没有,如何实现类似的结果(传递类类型?您可以像传递普通对象一样将类传递给方法。比如说 def create_object(klass, *args) klass.new(*args) end create_object(String) #=> ""

简单问题:

在java中,您可以定义:

void myFunction<T>(T value) { //do stuff }
void myFunction(T值){//do stuff}

ruby中是否有一个等价物,如果没有,如何实现类似的结果(传递类类型?

您可以像传递普通对象一样将类传递给方法。比如说

def create_object(klass, *args)
  klass.new(*args)
end

create_object(String)  #=> ""
create_object(Hash)  #=> {}
create_object(Array, 3, :hello)  #=> [:hello, :hello, :hello]

可以像传递普通对象一样将类传递给方法。比如说

def create_object(klass, *args)
  klass.new(*args)
end

create_object(String)  #=> ""
create_object(Hash)  #=> {}
create_object(Array, 3, :hello)  #=> [:hello, :hello, :hello]
Ruby紧随其后。您可以将任何类的参数传递给任何方法(这就是您可能需要泛型的最初原因)。如果您想获得所述参数的类,仍然可以使用
#class

def foo(bar)
  bar.class
end

foo 'baz' # => String
foo 42 # => Fixnum
Ruby紧随其后。您可以将任何类的参数传递给任何方法(这就是您可能需要泛型的最初原因)。如果您想获得所述参数的类,仍然可以使用
#class

def foo(bar)
  bar.class
end

foo 'baz' # => String
foo 42 # => Fixnum

首先是一些定义

  • 泛型是对类型的抽象
  • 多态性是一种和类型模式
  • 组合是一种产品类型模式
  • 大多数面向对象语言倾向于多态性
Ruby是一种面向对象语言。多态性是其设计的核心。Ruby中的类型系统在Ruby3中才越来越强大。因此,在这一点上,我们可能会看到更多有趣的泛型;但直到现在,我还没有听说这是一个功能

为了实现这一点,我们需要在技术上找到一种方法,在不知道类型的情况下对单独的类型应用方法。有很多代码重复是可能的

您的Java示例

void myFunction(T值){//do stuff}
…可以翻译成Ruby作为

def myFunction(值)
raise“仅适用于T类型”,除非value.is_a?T
#做事
结束
现在的神奇之处在于定义一组可能的
T
。我在想类似于

T类
函数()需要定义
提高“T”是抽象的
结束
结束
类

多态性的痛苦之处在于,您必须从一开始就定义类型空间。好的方面是你可以完全控制域空间。

首先是一些定义

  • 泛型是对类型的抽象
  • 多态性是一种和类型模式
  • 组合是一种产品类型模式
  • 大多数面向对象语言倾向于多态性
Ruby是一种面向对象语言。多态性是其设计的核心。Ruby中的类型系统在Ruby3中才越来越强大。因此,在这一点上,我们可能会看到更多有趣的泛型;但直到现在,我还没有听说这是一个功能

为了实现这一点,我们需要在技术上找到一种方法,在不知道类型的情况下对单独的类型应用方法。有很多代码重复是可能的

您的Java示例

void myFunction(T值){//do stuff}
…可以翻译成Ruby作为

def myFunction(值)
raise“仅适用于T类型”,除非value.is_a?T
#做事
结束
现在的神奇之处在于定义一组可能的
T
。我在想类似于

T类
函数()需要定义
提高“T”是抽象的
结束
结束
类

多态性的痛苦之处在于,您必须从一开始就定义类型空间。好的方面是你可以完全控制域空间。

Ruby是动态类型,传递类类型没有什么意义。你到底想解决什么?我有一些静态类,它们有一些静态方法,我想指定在调用methodGenerics时要使用的静态类,也称为参数多态性是静态类型系统的一个特性。Ruby没有静态类型系统。这个想法根本没有意义。同样,你的问题是关于类类型的。Ruby中没有类型。Ruby是动态类型,传递类类型没有什么意义。你到底想解决什么?我有一些静态类,它们有一些静态方法,我想指定在调用methodGenerics时要使用的静态类,也称为参数多态性是静态类型系统的一个特性。Ruby没有静态类型系统。这个想法根本没有意义。同样,你的问题是关于类类型的。Ruby中没有类型。你不能通过考试。我不是医生,所以我怀疑我需要遗传学;)@MarioStoilov,我在午餐时用手机写的。自动更正:)我不是医生,所以我怀疑我需要遗传学;)@MarioStoilov,我在午餐时用手机写的。自动更正:)