如何命名约束

问题描述 投票:3回答:2

[我有一个函数,可以接受一个稀疏的数组,并且我想将数组的内容限制为Int,介于0和255之间。因此,使用raku的出色文档,我可以写出:]]

my &simp = -> *@a where { 0 <= $_.all <= 255 } { @a <<+>> 10 }
say &simp( 2, 3, 4);
# returns: [12 13 14] 

根据需要,如果我提供的列表不在此范围内,则可以正确地得到一个错误,即。

say &simp( 2,3,400 );
# Constraint type check failed in binding to parameter '@a'; expected anonymous constraint to be met but got Array ($[2, 3, 400])

是否可以以某种方式命名约束,以便错误消息可以提供更好的响应?

如果要使用多个子代码进行编码,则会提供带有错误消息的默认子代码。但是对于内联尖??

我有一个函数,可以接受一个稀疏的数组,并且我希望将数组的内容限制为Int,介于0和255之间。因此,使用raku的出色文档,我可以写出:我的&simp =-> * ...] >

constraints raku named
2个回答
0
投票

您可以尝试使用||运算符在where子句中生成错误。

my &simp = -> *@a where { (0 <= $_.all <= 255) || die 'not in Range' } { @a <<+>> 10 }
say &simp( 2, 3, 4);
# returns: [12 13 14]

say &simp( 2,3,400 );
#not in Range

3
投票

您想要的是subset

© www.soinside.com 2019 - 2024. All rights reserved.