小编Fab*_*rey的帖子

Raku lambdas 的意外行为应该是相等的(我猜)

我正在学习 Raku 作为一个热情的项目,我想实现一个简单的fizzbuzz,为什么join只有当我用尖头块编写 lambda 时才能保留嗡嗡声?

my $iif =-> $x,$y,$z {if $x {$y} else {$z}}
my $modToString =-> $x,$y,$z {$iif($x%%$y,$z,'')}
my $FB =-> $x {join($modToString($x,3,'fizz'),$modToString($x,5,'buzz'))}
my $logic =-> $x {$iif($FB($x),$FB($x),$x)}
say map(-> $x {$logic($x)}, 1..100)

$modToString(1,3,'fizz')
> 
$modToString(3,3,'fizz')
> fizz
$modToString(3,5,'buzz')
> 
$modToString(5,5,'buzz')
> buzz
Run Code Online (Sandbox Code Playgroud)

如果我将尖头块变量转换为占位符变量,Rakudo 会抛出错误:

my $iif = {if $^x {$^y} else {$^z}};
my $modToString = {$iif($^x%%$^y,$^z,'')};
my $FB = {join($modToString($^x,3,'fizz'),$modToString($^x,5,'buzz'))}
my $logic = {$iif($FB($^x),$FB($^x),$^x)}
say map(-> $x {$logic($x)}, 1..100)

Too many positionals passed; expected …
Run Code Online (Sandbox Code Playgroud)

string lambda raku

10
推荐指数
1
解决办法
271
查看次数

标签 统计

lambda ×1

raku ×1

string ×1