如何记录返回值的函数,而返回值为空的函数应引发警告?
因此,目前下面的方法是有效的,因为yard允许指定的类型或void。
# @return [String]
def say_hello
nil
end发布于 2020-06-28 04:21:02
码数中的多种退货类型
在YARD中,文档提供了一个清晰的示例,说明如何在Declaring Types部分中定义多个返回类型。同一节说允许使用Ruby元类型来表示“没有有意义的值”,但是由于void没有真正的nil方法,我认为使用nil作为预期的返回类型(而不是void)通常在语义上更有用。
因此,要记录String或void的返回类型,可以这样表示:
# @return [String, void]
def say_hello
nil
end文档无法强制执行合同
YARD用于文档编制,实际上并不强制执行任何类型的方法签名或合同中的类型。因此,您的问题看起来像是X/Y问题,因为发出警告或触发异常仍然取决于方法或调用者。
表达你想要的东西的更好的方法是使用Kernel#warn或Kernel#raise来满足你的期望。例如,考虑以下内容:
# @param string [String]
# @raise [ArgumentError] argument missing or not String
# @return [String]
def say_hello string
unless string.is_a? String
raise ArgumentError, "string: #{string.class}, not String"
end
string
endRuby是一种鸭型语言。尽管我上面的例子看起来是一个改进,但它最终可能仍然是在您的代码中做一些非Rubyish的工作的变通方法。在没有看到真实代码的情况下,这似乎是在此方法和未知调用者之间执行协定的一种更合理的方式。
https://stackoverflow.com/questions/62584568
复制相似问题