Ruby 为什么可以';t我使用“;mkdir";使用路径名对象?

Ruby 为什么可以';t我使用“;mkdir";使用路径名对象?,ruby,Ruby,我最近一直在尝试Pathname库,我想做的一件事是使用mkdir创建一些目录 我查阅了文档,它说它结束了mkdir,但每次我尝试使用它时,我都会遇到以下错误: irb(main):006:0> p = Pathname.new('/tmp') => #<Pathname:/tmp> irb(main):007:0> a = p.mkdir("123adam") TypeError: can't convert String into Integer from

我最近一直在尝试Pathname库,我想做的一件事是使用
mkdir
创建一些目录

我查阅了文档,它说它结束了
mkdir
,但每次我尝试使用它时,我都会遇到以下错误:

irb(main):006:0> p = Pathname.new('/tmp')
=> #<Pathname:/tmp>
irb(main):007:0> a = p.mkdir("123adam")
TypeError: can't convert String into Integer
  from /usr/lib/ruby/1.8/pathname.rb:975:in `mkdir'
  from /usr/lib/ruby/1.8/pathname.rb:975:in `mkdir'
  from (irb):7
  from /usr/lib/ruby/1.8/fileutils.rb:1589
irb(main):006:0>p=Pathname.new(“/tmp”)
=> #
irb(主):007:0>a=p.mkdir(“123adam”)
TypeError:无法将字符串转换为整数
from/usr/lib/ruby/1.8/pathname.rb:975:in'mkdir'
from/usr/lib/ruby/1.8/pathname.rb:975:in'mkdir'
来自(irb):7
from/usr/lib/ruby/1.8/fileutils.rb:1589

谁能解释一下我这里做错了什么。

您需要指定要使用路径名创建的目录,然后调用
mkdir

这应该起作用:

p = Pathname.new('/tmp/123adam')
p.mkdir

您可以提供的参数是新目录的权限。

出于兴趣,您得到“无法将字符串转换为整数”的原因是因为
Pathname.mkdir
实际上是
Dir.mkdir
的包装器,如下所示:

def mkdir(*args) Dir.mkdir(@path, *args) end

Pathname
对象表示的路径作为第一个参数传递给
Dir.mkdir
,然后是传递给
Pathname.mkdir
的任何参数。
Dir.mkdir
的第二个参数是您希望创建的目录具有的数字访问权限。因此,在您的示例中,
“123adam”
将被传递到
Dir.mkdir
中,其中需要一个数字。

ahhh现在我明白了!非常感谢你!或者:
(p+“123adam”).mkdir