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

时间:2012-01-09 17:12:01

标签: ruby

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

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

4 个答案:

答案 0 :(得分:11)

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

所以,你不能将变量声明为某种严格的类型,它总是动态的。

答案 1 :(得分:5)

你想做什么?

您可以创建自己的课程:

class Boat
end

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

class Boat < Struct.new(:name, :speed)
end
b = Boat.new "Martha", 31

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

b.is_a?(Boat)    # Includes subclasses of Boat
b.class == Boat

答案 2 :(得分:4)

一个向Ruby添加打字的提议是http://bugs.ruby-lang.org/issues/5583由Yasushi Ando(parse.y famtour成名)。我最喜欢的评论是:

  

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

答案 3 :(得分:2)

如果我正确理解你对type的意思,Ruby中的每个Class都会定义一个类型。

1.class
# => Fixnum

您可以创建一个类来定义自定义类型

class Book
end

b = Book.new
b.class
# => Book