以问号结尾的Ruby方法;传统返回真或假。
的例子:
if success?
puts "yes"
else
puts "oh nos"
end
是否存在一种可接受的模式匹配样式来询问问题并返回[:ok]或[:error,…]?
例如:
case authorization_valid?
in [:error, msg]
puts "error: #{msg}"
in [:ok]
puts "yes"
end
我们使用:ok,:error来代替true或false。
带问号的ruby方法?模式匹配?
想法吗?
丹尼尔
没有这样的标准。您可能对使用dry-monads
中的Result
感兴趣:
def method_that_return_a_result
if condition
Success :foo
else
Failure :bar
end
end
case method_that_return_a_result
in Success(value)
puts value
in Failure('some specific value')
puts 'this happened, sorry'
in Failure(String => error)
raise ProcessingError, error
in Failure(other)
puts "Unexpected failure #{other.inspect}"
end
(代码只是你可以实现的一个例子)
您的案例将显示
case authorization_valid?
in Failure(msg)
puts "error: #{msg}"
in Success
puts "yes"
end