class Format { }

Format 是一个不可变对象,它包含根据兼容 sprintf 的格式规范将一组值转换为字符串的逻辑。它在各个方面都充当标准字符串,但也可以像 sprintf 一样作为带有参数的 Callable 被调用以生成字符串。

在 Rakudo 编译器的 2023.06 版本中可用。需要语言级别 6.e

use v6.e.PREVIEW;
my $f = Format.new("'%5s'");
say $f;                         # OUTPUT: «'%5s'␤» 
say $f("foo");                  # OUTPUT: «'  foo'␤» 

方法§

方法 new§

method new($format --> Format:D)

从兼容 sprintf 的格式字符串创建一个新的 Format 对象。

use v6.e.PREVIEW;
my $d = Format.new("%05d");
say $d;                         # OUTPUT: «%05d␤» 
say $d(42);                     # OUTPUT: «00042␤» 

方法 Callable§

method Callable(--> Callable:D)

返回从给定格式创建的 Callable。仅用于内省目的,因为可以直接调用 Format 对象。

方法 directives§

method directives(--> List:D)

返回给定格式中看到的指令列表。用于内省目的。

use v6.e.PREVIEW;
my $d = Format.new("%05d%3x:%s");
say $d.directives;              # OUTPUT: «(d x s)␤» 

方法 arity§

method arity(--> List:D)

返回此格式所需的最小位置参数数。用于内省目的。

use v6.e.PREVIEW;
my $d = Format.new("%05d%3x:%s");
say $d.arity;                   # OUTPUT: «3␤» 

方法 count§

method count(--> List:D)

返回此格式所需的最大位置参数数。用于内省目的。

use v6.e.PREVIEW;
my $d = Format.new("%05d%3x:%s");
say $d.count;                   # OUTPUT: «3␤»