Perl 6中的枚举或符号

Perl 6中的枚举或符号,perl,raku,Perl,Raku,我想将一个参数传递给一个可能只有预定义值的方法 method send-http($url, $http_method) { .... } 我是否应该创建一个枚举来传递$http\u方法?如果是的话,那怎么办 或者Perl 6在Ruby中有类似的符号吗 正如@Christoph所提到的,您可以使用枚举: enum Method <GET PUT POST>; sub http-send(str $url, Method $m) { * } http-send("http:/

我想将一个参数传递给一个可能只有预定义值的方法

   method send-http($url, $http_method) { .... }
我是否应该创建一个枚举来传递
$http\u方法
?如果是的话,那怎么办


或者Perl 6在Ruby中有类似的符号吗

正如@Christoph所提到的,您可以使用枚举:

enum Method <GET PUT POST>;
sub http-send(str $url, Method $m) { * }

http-send("http://url/", GET);

您的意思是想将
$http\u方法
限制为
GET
HEAD
POST
等方法之一吗。?我想您需要一个
枚举
,但我看不出传递简单字符串有什么问题;您可以在
send\u http
中验证它是否是测试中的有效选项之一。我不明白你为什么认为像红宝石符号这样的东西会有帮助。符号的主要优点是它们是不可变的,并且比较速度非常快,但是您可以很容易地错误地编写
:GIT
“GIT”
,而符号不会保护您免受that@Borodin. 对至少符号是快的。我相信在Perl 6中,一定有比字符串更合适的东西。我仍然不太理解您试图解决的问题。一种方法是:
enum方法;方法发送http($url,方法$method){…}
;你也可以和我一起去arguments@Christoph谢谢还有其他选择吗?什么是
,我如何键入它?有什么功能∈ , 如何键入它?
是的unicode符号元素,您还可以键入Texas变体,即
(elem)
sub http-send(str $url, str $m where { $m ∈ <GET HEAD POST> }) { * }

http-send("http://url/", 'GET');

http-send("http://url/", 'PUT');
Constraint type check failed for parameter '$m'
multi sub http-send('GET') { * }
multi sub http-send('PUT') { * }
multi sub http-send($m) { die "Method {$m} not supported." }

http-send('GET');

http-send('POST');
Method POST not supported.