它没有记录在文档中。但是通过实验,我发现将方法的返回类型键入为 Void 会取消“最后一条语句返回”(这很好),使其返回 Nil。
def foo; "baz"; end #=> "baz" : String
def foo : Void; "baz"; end
#=> 无
def foo : Nil; "baz"; end
#=> 无
问题是:
以上假设正确吗?
Void 和 Nil 方法返回类型有什么区别吗?
它没有记录在文档中。但是通过实验,我发现将方法的返回类型键入为 Void 会取消“最后一条语句返回”(这很好),使其返回 Nil。
def foo; "baz"; end #=> "baz" : String
def foo : Void; "baz"; end
#=> 无
def foo : Nil; "baz"; end
#=> 无
问题是:
以上假设正确吗?
Void 和 Nil 方法返回类型有什么区别吗?
你是对的。语言中的一些最后更改尚未反映在文档中。我想现在是我写更多文档的时候了:-)
看到这个合并的地方:https ://github.com/crystal-lang/crystal/pull/2701
所以那里的 Void 和 Nil 没有区别,推荐的做法是在 Crystal 领域使用 Nil(在 C 绑定中使用 Void)