我只是有点撞墙在这里。假设我的代码如下所示:
def foo
if bar
123
else
nil
end
end
这里的返回值是 Int 或 Nil。我已经习惯了可选项的概念(在 Rust、F#、Haskell 等语言中),这真的让我很困惑。
我意识到我可以毫无问题地返回任何类型的值,但是从更实用的背景来看,它只是感觉不对。
在 Rust 中,我会返回一个Option<T>
. 这样我就可以很容易地测试是否Some
返回了值,或者没有值(None
)。不过,在 Ruby/Crystal 中,这似乎是一件愚蠢的事情。
所以,问题来了:
如果nil
没有有用的价值来返回和测试,我是否应该返回,这是处理此类情况的惯用方式吗?如果没有,我应该如何以惯用的方式做到这一点?