Ruby 为什么可以';t我使用“;mkdir";使用路径名对象?
我最近一直在尝试Pathname库,我想做的一件事是使用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
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