在 Mu 中§
有关方法 say的详细信息,请参阅主要文档 in context
multi method say()
say 42; # OUTPUT: «42»
因此,say 实际执行的操作被推迟到实际子类。在 大多数情况下,它对对象调用 .gist,返回一个紧凑的字符串表示形式。
在非接收器上下文中,say 将始终返回 True。
say (1,[1,2],"foo",Mu).map: so *.say ;# OUTPUT: «1[1 2]foo(Mu)(True True True True)»
但是,这种行为只是惯例,你不应该信任它来编写你的代码。然而,它有助于解释某些行为。
say 首先在 *.say 中打印,但最外层的 say 正在打印 so 操作返回的 True 值。
在 Proc::Async 中§
有关方法 say的详细信息,请参阅主要文档 in context
method say(Proc::Async: , : = )
对 $output 调用方法 gist,添加一个换行符,将其编码为 UTF-8,并将其发送到外部程序的标准输入流,并将其编码为 UTF-8。
返回一个 Promise,一旦数据完全进入外部程序的输入缓冲区,该 Promise 就会被保留。
必须为写入创建 Proc::Async 对象(使用 Proc::Async.new(:w, $path, @args))。否则,将抛出 X::Proc::Async::OpenForWriting 异常。
在调用方法 say 之前必须调用 start,否则将抛出 X::Proc::Async::MustBeStarted 异常。
在 IO::Handle 中§
有关方法 say的详细信息,请参阅主要文档 in context
multi method say(IO::Handle: ** --> True)
此方法与 put 相同,只是它通过调用 .gist 而不是 .Str 来将参数字符串化。
当句柄 处于二进制模式 时尝试调用此方法将导致抛出 X::IO::BinaryMode 异常。
my = open 'path/to/file', :w;.say(Complex.new(3, 4)); # OUTPUT: «3+4i».close;
在独立例程中§
有关子 say的详细信息,请参阅主要文档 in context
multi say(** --> True)
打印给定对象的“要点”;如果对象是 Str 的子类,它将始终调用 .gist。与 put 相同,但它使用 .gist 方法获取对象的字符串表示形式;与 put 的情况一样,它还将自动为 Junctions 进行线程处理。
注意:某些对象的 .gist 方法(例如 列表)仅返回有关对象的部分信息(因此称为“要点”)。如果您打算打印文本信息,则很可能需要改用 put。
say Range; # OUTPUT: «(Range)»say ; # OUTPUT: «(Foo)»say 'I ♥ Raku'; # OUTPUT: «I ♥ Raku»say 1..Inf; # OUTPUT: «1..Inf»