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»