Perl6/Raku
我想创建一个子程序,只允许传递特定的值。不传递允许的值将会创建一个检查错误(perl6 -c)。
我该如何实现这个功能?
非常感谢, -T
嗨Raiph,
在我的WinPopUps模块中,我使用了“where”方法,因为它可以一眼告诉用户允许的值是什么。我喜欢它!这一切都与可维护性有关!(顺便说一句,以下是你创建的怪物!)
sub WinPopUp( Str $TitleStr,
Str $MessageStr,
Str $Icons where * ~~ "Exclamation" |
"Warning" |
"Information" |
"Asterisk" |
"Question" |
"Stop" |
"Error" |
"Hand",
Str $Buttons where * ~~ "AbortRetryIgnore" |
"CancelTryAgainContinue" |
"Help" |
"Ok" |
"OkCancel" |
"RetryCancel" |
"YesNo" |
"YesNoCancel" )
is export( :WinPopUp ) {
感谢您的帮助! -T
如果您需要整个模块以及发布位置,请告诉我。
sub WinPopUp( … Str $Icons where * eq @icons.any, Str $Buttons where * eq @buttons…)
的引用。你还可以考虑使用Str()
而不是Str
,这样可以传递可以转换为字符串的非字符串。 - user0721090601perl6 -c
只进行编译时检查。这不包括where
子句。它们只在运行时检查。 - raiph