是否可以在Ruby中声明类型?

Ope*_*erX 10 ruby

我想澄清是否不可能在Ruby中声明类型或者它是否没有必要?如果有人想声明数据类型,那么它是可能的.

更新:我的要点是要理解,在理论上,为不会改变类型的变量提供静态类型是否会提高性能.

Ole*_*nyk 13

某些语言(如C或Java)使用"强"或"静态"变量类型.Ruby是一种"动态类型"语言,也就是"鸭子打字",这意味着当分配的数据类型发生变化时,变量会动态地改变自己的类型.

因此,您无法将变量声明为某种严格类型,它始终是动态的.

  • 如果您避免使用强类型和静态类型具有类似含义,则您的答案将更加精确.Ruby是一种动态类型语言,同时又是一种强类型语言. (2认同)

Dav*_*son 5

你想做什么?

您可以创建自己的类:

class Boat
end
Run Code Online (Sandbox Code Playgroud)

如果您想要一种简单的方法来创建一个用于保存数据的类,请使用结构:

class Boat < Struct.new(:name, :speed)
end
b = Boat.new "Martha", 31
Run Code Online (Sandbox Code Playgroud)

您不能像在C中那样声明变量或方法参数的类.相反,您可以在运行时检查类型:

b.is_a?(Boat)    # Includes subclasses of Boat
b.class == Boat
Run Code Online (Sandbox Code Playgroud)


And*_*imm 5

向 Ruby 添加类型的一项提议是由 Yasushi Ando(在parse.y famtour 中出名)的http://bugs.ruby-lang.org/issues/5583。我最喜欢的评论是:

(b) 不确定它如何尊重鸭子打字。我认为整个想法是(可选)烤鸭!