【发布时间】:2016-12-21 22:42:32
【问题描述】:
我在这里有点撞墙了。 假设我的代码如下所示:
def foo
if bar
123
else
nil
end
end
这里的返回值是 Int 或 Nil。 我已经习惯了可选项的概念(在 Rust、F#、Haskell 等语言中),这真的让我很困惑。
我意识到我可以毫无问题地返回任何类型的值,但是从更实用的背景来看,它只是感觉不对。
在 Rust 中,我会返回一个 Option<T>。这样我就可以轻松测试是否返回了 Some 值,或者没有返回值 (None)。不过,在 Ruby/Crystal 中,这似乎是一件愚蠢的事情。
所以,问题来了:
如果没有返回和测试有用的价值,我应该只返回nil,这是处理此类情况的惯用方式吗?如果没有,我应该如何以惯用的方式做到这一点?
【问题讨论】:
-
致接近投票者,您能否解释一下自己,以便我改进我的问题?
-
我不认为在这个问题中混合 Ruby 和 Crystal 是合理的 - 不是每个 Ruby 成语都是 Crystal 成语。
-
@mgarciaisaia 是对的。我标记了两者,因为在这种情况下它并不重要。 Crystal 有
Nil类型并试图感觉像 Ruby,所以我认为这个问题适用于两者。
标签: ruby crystal-lang