如何在函数定义中声明变量类型?
在下一个代码中:
def f(a, b)
#...
end
我可以忘记它适用的类型。我如何声明它是一个fixnum?感谢
答案 0 :(得分:1)
你的问题有两点混淆:
Fixnum
不是类型,而是类。类不是类型。 协议是类型。 任何说出正确协议的对象属于同一类型。 Ruby中众所周知的没有相应类或mixin的协议的例子就是我所说的 Appendable 协议(由名为<<
的方法组成,该方法将其参数附加到其中接收器)或 Iterable 协议(由名为each
的方法组成,其yield
依次为{{1}}每个接收器的元素。 [注意:我编造了这些名字。实际上,这些协议在Ruby文化中根深蒂固,甚至没有名字。] 一般情况下,您将在方法文档中描述您的方法所期望的协议,但有时会遗漏此描述,例如:从方法的名称或参数的名称可以看出这一点。
答案 1 :(得分:-1)
请参阅评论和其他答案,以澄清什么是真正的&#34;类型&#34;。
如何测试&#34;变量的类型&#34; (在Ruby中,每个变量引用一个对象,我们不讨论类型而是类)
如何测试课程:
variable = MyClass.new
variable.class # => "MyClass"
variable.is_a?(MyClass) # => true
但是通常在Ruby中我们更关心对象可以做什么,我们可以用它们做什么:
if variable.respond_to?(increment)
variable.increment
else
raise "Error : must provide as 'variable' an object that can increment itself"
end
现在回答你的问题,我会&#34;宣布&#34;使用rdoc语法
的函数定义/注释中的行为# Description of f
# Params:
# +a+:: command line string to be executed by the system
# +b+:: +Proc+ object that ....
def f(a, b)
# code
end