raku - Raku 中 (Any) 的含义是什么 - 特别是 ()?

标签 raku

这是 Raku 的一个实验:

> my $x
(Any)
> my $y=1
1
> my @a=[1, 2]
[1 2]
> my %h=a=>'b'
{a => b}
> say "nil" unless $x
nil

我可以看到 []表示数组字面量,{}一个哈希文字。

我也可以看到 (Any)行为类似于 nil - 在上面显示的 bool 上下文中返回 false。

我找到了 (Any)有趣的。文档告诉我 Any只是乐中的神职之一。但是括号是做什么用的()附近Any告诉我?

最佳答案

当您使用 REPL 时,表达式的结果使用 say 显示. say函数调用 .gist表达式上的函数。
Any是一个类型对象。类型对象有一个 .gist将括号放在它们周围的方法。
put功能与say几乎一样函数,但它调用 .Str表达式上的函数。这会产生警告,因为您无法真正对类型对象进行字符串化。观察差异:

$ raku -e 'say Any'
(Any)

# raku -e 'put Any'
Use of uninitialized value of type Any in string context.
Methods .^name, .raku, .gist, or .say can be used to stringify it to something meaningful.
  in block <unit> at -e line 1

Classes and Objects , Type System , Type Objects想要查询更多的信息。

关于raku - Raku 中 (Any) 的含义是什么 - 特别是 ()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61818213/

相关文章:

set - 如何比较raku-lang中的set集合?

where-clause - 无法在 CLASS 中使用带有 WHERE 子句的无符号变量?

list - 映射顺序列表元素组的简单方法

process - 如何在 perl6 中执行外部命令并捕获其输出?

小数点后 19 位及以上的数学精度

raku - 如何将类属性声明为类名的联合?

io - 试图重铸 $*ARGFILES

Perl 6 - 接受 "Bareword"输入的子程序

arguments - Perl 6 block 是一个参数还是一个参数?

raku - 制作自定义声明器