我想澄清是否无法在Ruby中声明类型或者它是否没有必要?如果有人想声明数据类型,那么它是可能的。
更新:我的要点是要理解,在理论上,为不会改变类型的变量提供静态类型是否会提高性能。
答案 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