首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >YARD @return not null

YARD @return not null
EN

Stack Overflow用户
提问于 2020-06-26 05:25:14
回答 1查看 354关注 0票数 1

如何记录返回值的函数,而返回值为空的函数应引发警告?

因此,目前下面的方法是有效的,因为yard允许指定的类型或void。

代码语言:javascript
复制
# @return [String]
def say_hello
  nil
end
EN

回答 1

Stack Overflow用户

发布于 2020-06-28 04:21:02

码数中的多种退货类型

在YARD中,文档提供了一个清晰的示例,说明如何在Declaring Types部分中定义多个返回类型。同一节说允许使用Ruby元类型来表示“没有有意义的值”,但是由于void没有真正的nil方法,我认为使用nil作为预期的返回类型(而不是void)通常在语义上更有用。

因此,要记录Stringvoid的返回类型,可以这样表示:

代码语言:javascript
复制
# @return [String, void]
def say_hello
  nil
end

文档无法强制执行合同

YARD用于文档编制,实际上并不强制执行任何类型的方法签名或合同中的类型。因此,您的问题看起来像是X/Y问题,因为发出警告或触发异常仍然取决于方法或调用者。

表达你想要的东西的更好的方法是使用Kernel#warnKernel#raise来满足你的期望。例如,考虑以下内容:

代码语言:javascript
复制
# @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
end

Ruby是一种鸭型语言。尽管我上面的例子看起来是一个改进,但它最终可能仍然是在您的代码中做一些非Rubyish的工作的变通方法。在没有看到真实代码的情况下,这似乎是在此方法和未知调用者之间执行协定的一种更合理的方式。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62584568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档