【发布时间】:2018-05-17 00:00:53
【问题描述】:
我正在尝试调用File 上的方法。我阅读了File 的文档,并看到了method ::basename 类。我尝试了以下方法:
x = File.new("name_of_file.ext")
x::basename("name_of_file.ext")
为什么不能这样访问类方法::basename?
【问题讨论】:
-
类方法是从类中访问的。在您的情况下,您正在寻找 File.basename(some_file_string)。
-
...并从一个实例调用类方法
basename,您将编写x.class.basename("name_of_file.ext"),如x.class #=> File。 -
我已经通过对您的问题做出一些假设来写一个答案,但实际上,您的问题不清楚,您应该澄清它。基本上,您是在问“为什么我不能像 php 那样访问类方法 ::basename ?”答案是“因为 Ruby 是 Ruby,而不是 PHP。”
-
仅供参考
::在调用方法时与.相同,即o.foo和o::foo相同。
标签: ruby class methods instance