我可以告诉Ruby方法期望特定的参数类型吗?
def doSomething(value) if (value.is_a?(Integer)) print value * 2 else print "Error: Expected integer value" exit end end
我可以告诉Ruby方法某个参数应该是一个Integer,否则崩溃? 像Java一样。
不,你不能。 你只能做你正在做的事情:自己检查一下你的类型。
我迟到了,但我想补充一些东西:
Ruby中一个非常重要的概念是Duck Typing 。 这个原则背后的想法是,你并不真正关心变量的类型,只要它们可以做你想做的事情。 你想要的方法是接受一个响应(*)的变量。 只要实例可以相乘,您就不关心类名。
因此,在Ruby中你会经常看到方法#responds_to?
比#is_a?
通常,只有在接受来自外部源(例如用户输入)的值时,才会执行类型断言。
如果您认为有必要,可以随意随意提出exception。
def doSomething(value) if (value.is_a?(Integer)) print value * 2 else raise "Expected integer value" end end
你是否真的想要这样做是一个单独的问题。 🙂