我有一个函数可以接受一个稀疏数组,并且我想将数组的内容限制为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])
是否可以以某种方式命名约束,以便错误消息可以提供更好的响应?
如果要使用多个子编码,则将提供带有错误消息的默认子。但是对于内联尖?
您可以尝试使用||在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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句