我看到我可以使用获取目录中的文件列表
Dir["*"]
Run Code Online (Sandbox Code Playgroud)
我该怎么读这个语法呢?据我所知,您可以使用[]从数组或哈希中获取值.
[]如何处理通话?
[]只是一个方法,比如#to_s,#object_id.等等
您可以在任何对象上定义它:
class CoolClass
def [](v)
puts "hello #{v}"
end
end
CoolClass.new["John"] # => "hello John"
Run Code Online (Sandbox Code Playgroud)
在您的情况下,它以这种方式定义为单例方法:
class Dir
def self.[](v)
...
end
end
Run Code Online (Sandbox Code Playgroud)
从Ruby 文档来看,Dir["*"]相当于Dir.glob(["*"]). (正如所指出的,它是语法糖)
Dir不是一个调用,它是一个类,其对象class Dir是目录流,您可以像数组一样访问它。
在您的特定情况下,Dir["*"]将返回array从作为 传递的模式中找到的文件名Dir[patternString]。"*"因为模式将匹配零个或多个字符,换句话说,它将匹配所有内容,因此将返回array该目录中的所有文件名。
对于第二个问题,您可以将其定义为任何其他方法,如下所示:
class YourClass
def self.[](v)
#your code here
end
end
Run Code Online (Sandbox Code Playgroud)