以下代码无法编译,因为编译器认为“with”表达式的类型是 (U8 | None) 尽管我不知道它的主体会如何变为 None
class Disposable
new create() => None
fun dispose() => None
fun value(): U8 => 42
primitive TestWith
fun apply(): U8 =>
with d = Disposable do
d.value()
end
但是,如果我将“else”部分添加到“with”中-类型的一切都会好起来的。但是编译器抱怨“尝试表达式永远不会导致错误”
primitive TestWith
fun apply(): U8 =>
with d = Disposable do
d.value()
else
0
end
有任何想法吗?