[ Perl 6 ] 定义类型的子集

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[ Perl 6 ] 定义类型的子集相关的知识,希望对你有一定的参考价值。

 

[ Perl 6 ] 定义类型的子集

There is more than one way to do it.

  • 有些时候,我们希望定义的变量或传递的参数的类型应当是有限制的基本类型。为了实现这一需求,Perl 6提供了subset关键字,它用于定义一个类型的子集
subset Non-neg-int of Int where { $_ >= 0 }

# factorial as example
sub factorial(Non-neg-int $n) {
  return 1 if $n == 0;
  return $n * factorial $n-1;
}
> fact(1.5)
Type check failed in binding to parameter ‘$n‘; expected Int but got Rat (1.5)
  in sub fact at <unknown file> line 1
  in block <unit> at <unknown file> line 1

> fact(-1)
Constraint type check failed in binding to parameter ‘$n‘; expected Non-neg-int but got Int (-1)
  in sub fact at <unknown file> line 1
  in block <unit> at <unknown file> line 1
?

以上是关于[ Perl 6 ] 定义类型的子集的主要内容,如果未能解决你的问题,请参考以下文章

如何有条件地将 C 代码片段编译到我的 Perl 模块?

VSCode自定义代码片段6——CSS选择器

perl 6集合操作中用户定义的比较函数

使用 Perl 6 自定义运算符

找到我的自定义代码片段 Xcode 6?

在代码片段中包含类型转换