Pony 能够对类进行模式匹配,也可以在匹配表达式中分配结果(使用let ... :
),但是有没有办法在匹配表达式中解包值?例如像这样的东西?
actor Main
fun f(x: (Foo | Bar)): String =>
match x
| Foo(1) => "one"
| Foo(2) => "two"
| Foo(x) => x.string() // fails
else
"Bar"
end
我能想到的唯一选择是一系列
actor Main
fun f(x: (Foo | Bar)): String =>
match x
| Foo(1) => "one"
| Foo(2) => "two"
| Bar => "Bar"
else
try
let f = x as Foo
f.number.string()
end
end
但这并不好,特别是如果有多个可能的类要匹配。