【发布时间】:2018-07-11 12:37:06
【问题描述】:
我想创建一个函数,它返回一个Range 或一个由多个Ranges 组成的any Junction。
例如:
sub foo (Range $a, Range $b) {
if $a.min <= $b.max && $b.min <= $a.max {
($a.min < $b.min ?? $a.min !! $b.min)..($a.max < $b.max ?? $a.max !! $b.max)
} else {
($a|$b)
}
}
是否有一种简单的方法可以向 sub 中添加类型约束以表示它可以返回 Range 或 Junction?
我的想法包括
- 在 where 子句中进行检查的多子。
- 子集
Any。 - 总是返回一个联结并只使用 one() (但我想保留可能的范围)
但如果有人能想到更简单的方法。
【问题讨论】:
-
签名中返回值不同的multi sub,对我来说感觉最自然,最高效。
-
您是否考虑过 always 返回一个 Junction,但可能包含 1 个元素?
-
我正在考虑这个问题。我目前正在努力弄清楚我想要实现的目标。 :)
标签: raku