Пони не имеет встроенного типа опции.Вместо этого вы можете написать тип суммы (…. | None)
с альтернативой None
.Сопоставление с образцом может использоваться для восстановления альтернатив на основе их типов:
class Foo
var _bar: (Array[I32] ref | None) = None
fun ref bar(): Array[I32] ref =>
match _bar
| let bar': Array[I32] => bar'
| None =>
let bar'' = Array[I32]
_bar = bar''
bar''
end
Обратите внимание, что Pony использует […]
вокруг аргументов типа, а не в скобках.