Возможно, наиболее прямым переводом является использование constant
для введения нового символа, вычисляемого во время компиляции.
my constant foo_t = do if $*DISTRO.is-win {
given $*KERNEL.bits {
when 32 { int32 }
when 64 { int64 }
}
} else {
long
}
Константа, связанная с объектом типа, действует так же, как тип, и может бытьиспользуется в подписи.
sub handle_foo(foo_t is rw) is native { * }