簡書對插入代碼支持的不給力啊。 Perl 6 語法肯定識別不出, 但是空格對齊也不給力啊。
Subset 可用于聲明某一類型的子集。
輸入一個密碼, 要求密碼必須滿足如下條件:
1、 至少 8 位
2、 必須包含大寫字母、小寫字母 和 數(shù)字
use v6;
subset Length8 of Str where *.chars < 8;
subset UpCase of Str where none('A'..'Z') ∈ *.comb.Set;
subset LowerCase of Str where none('a'..'z') ∈ *.comb.Set;
subset IntNumber of Str where none('0'..'9') ∈ *.comb.Set;
my $guess = prompt('Enter your password:');
given $guess {
when Length8 { say '密碼長度必須為 8 位 以上'; proceed }
when UpCase { say '密碼必須包括大寫字母'; proceed }
when LowerCase { say '密碼必須包含小寫字母'; proceed }
when IntNumber { say '密碼必須包含數(shù)字'; }
}
該程序具有可擴展性, 要增加一種密碼驗證, 只有添加一個 subset 就好了,然后在 given/When 里面增加一個處理。
proceed :vi. 前進(jìn); 繼續(xù)下去。
proceed
相當(dāng)于 continue
, 不像 C 里面的 falling through, Perl 6 里面的 proceed 在繼續(xù)執(zhí)行下一個 when
語句時會計算 when 后面的條件。 所以, 只要有 proceed , 則 proceed 后面的那個條件就會被執(zhí)行。