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 例程返回 Pair 的 List。IO::Path::Parts 类通过执行 Positional、Associative 和 Iterable 来保持与这些先前实现的兼容性。
my = IO::Path::Parts.new('C:', '/some/dir', 'foo.txt');say <volume>; # OUTPUT: «C:»say [0]; # OUTPUT: «volume => C:»say [0].^name; # OUTPUT: «Pair».say for [];# OUTPUT: «volume => C:dirname => /some/dirbasename => foo.txt»