1

ドキュメントには記載されていません。しかし、実験を通じて、メソッドの戻り値の型を Void と入力すると、「最後のステートメントの戻り値」がキャンセルされ (これは良いことです)、Nil が返されることがわかりました。

def foo; "baz"; end #=> "baz" : String

def foo : Void; "baz"; end#=> ゼロ

def foo : Nil; "baz"; end#=> ゼロ

質問は:

上記の仮定は正しいですか?

Void と Nil メソッドの戻り値の型に違いはありますか?

4

1 に答える 1

2

あなたは正しいです。言語の最後の変更のいくつかは、まだドキュメントに反映されていません。もっとドキュメントを書く時が来たと思います:-)

これがマージされた場所を参照してください: https://github.com/crystal-lang/crystal/pull/2701

したがって、そこでは Void と Nil の間に違いはなく、Crystal ランドでは Nil を使用することをお勧めします (C バインディングでは Void を使用します)。

于 2016-09-11T12:16:33.950 に答える