Raku 中的 (Any) 是什么意思 - 特别是 ()?

2024-01-08

这是 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 - 在上面显示的布尔上下文中返回 false。

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


当您使用 REPL 时,表达式的结果显示为say. The say函数调用.gist表达式上的函数。

Any是一个类型对象。类型对象有一个.gist将括号括起来的方法。

The 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

See 类和对象 https://docs.raku.org/language/classtut, 类型系统 https://docs.raku.org/language/typesystem, 类型对象 https://docs.raku.org/language/objects#index-entry-Type_objects了解更多信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Raku 中的 (Any) 是什么意思 - 特别是 ()? 的相关文章

随机推荐