class IO::Path::Parts does Positional does Associative does Iterable { }

IO::Path::Parts 对象是 IO::Path 对象部分的容器。它通常通过对 IO::Path 对象调用方法 .parts 来创建。它还可以通过对 IO::Spec 的低级路径操作子类的对象调用方法 .split 来创建。

IO::Path 的部分是

方法§

方法 new§

method new(\volume, \dirname, \basename)

使用 \volume\dirname\basename 分别作为卷、目录名和基本名称部分创建一个新的 IO::Path::Parts 对象。

属性 volume§

只读。返回 IO::Path::Parts 对象的卷。

IO::Path::Parts.new('C:''/some/dir''foo.txt').volume.say;
# OUTPUT: «C:␤» 

属性 dirname§

只读。返回 IO::Path::Parts 对象的目录名部分。

IO::Path::Parts.new('C:''/some/dir''foo.txt').dirname.say;
# OUTPUT: «/some/dir␤» 

属性 basename§

只读。返回 IO::Path::Parts 对象的基本名称部分。

IO::Path::Parts.new('C:''/some/dir''foo.txt').basename.say;
# OUTPUT: «foo.txt␤» 

先前的实现§

在 Rakudo 2020.06 之前,IO::Path.parts 方法返回 Map,而 IO::Spec 子类的 .split 例程返回 PairListIO::Path::Parts 类通过执行 PositionalAssociativeIterable 来保持与这些先前实现的兼容性。

my $parts = IO::Path::Parts.new('C:''/some/dir''foo.txt');
say $parts<volume>;      # OUTPUT: «C:␤» 
say $parts[0];           # OUTPUT: «volume => C:␤» 
say $parts[0].^name;     # OUTPUT: «Pair␤» 
.say for $parts[];
# OUTPUT: «volume => C:␤dirname => /some/dir␤basename => foo.txt␤»