在 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
的情况一样,它还将自动为 Junction
s 进行线程处理。
注意:某些对象的 .gist
方法(例如 列表)仅返回有关对象的部分信息(因此称为“要点”)。如果您打算打印文本信息,则很可能需要改用 put
。
say Range; # OUTPUT: «(Range)»say ; # OUTPUT: «(Foo)»say 'I ♥ Raku'; # OUTPUT: «I ♥ Raku»say 1..Inf; # OUTPUT: «1..Inf»