码迷,mamicode.com
首页 > 其他好文 > 详细

[ Perl 6 ] 定义类型的子集

时间:2017-09-01 12:49:32      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:mono   imp   type   cte   mfp   int   wrap   acm   hidden   

 

[ 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 ] 定义类型的子集

标签:mono   imp   type   cte   mfp   int   wrap   acm   hidden   

原文地址:http://www.cnblogs.com/wander4096/p/7462470.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!