Raku如何简化返回所有子数组长度均为2的数组的返回类型定义
简化方案
你可以直接用Raku原生的固定长度参数化数组类型来实现,不需要嵌套定义匿名subset,简化后的类型定义如下:
subset TArray of Array where .all ~~ Array[Int, Int];
这里Array[Int, Int]是Raku原生支持的参数化类型,会直接匹配正好包含两个Int元素的数组,完全符合你对子数组的格式要求,比原来嵌套的匿名subset简洁很多。
如果你这个类型约束只在当前函数中使用一次,甚至可以不用单独定义subset,直接把约束写在函数的返回类型声明里即可:
sub fcn(Int $n) of Array where .all ~~ Array[Int, Int] is export(:fcn) { [[1, 2], [3, 4]]; }
如果你偏好更短的写法,也可以用形状参数语法Array[Int;2]代替Array[Int, Int],二者效果完全一致,可以按自己的编码风格选择。
内容的提问来源于stack exchange,提问作者user3166747
相关产品推荐
相关产品推荐

