如果是Array和String类定义,这些东西是如何定义的?
def whatever(some_input)
some_input = Array(some_input)
end
Run Code Online (Sandbox Code Playgroud)
如何调用它?我们可以将此行为添加到我们自己的类中,还是仅适用于核心类?
它们实际上是内核上的方法:
>> Kernel.methods.select { |m| m =~ /^[A-Z]/ }
=> [:Array, :Complex, :Float, :Integer, :Rational, :String, :URI]
Run Code Online (Sandbox Code Playgroud)
而Object包含内核,所以这些方法随处可用.您可以创建名称以大写字母开头的方法,但这并不常见.
NokogiriNokogiri::HTML与Nokogiri::XML构造函数做类似的事情.例如,在Nokogiri你会发现:
module Nokogiri
class << self
###
# Parse HTML. Convenience method for Nokogiri::HTML::Document.parse
def HTML thing, url = nil, encoding = nil, options = XML::ParseOptions::DEFAULT_HTML, &block
Nokogiri::HTML::Document.parse(thing, url, encoding, options, &block)
end
end
#...
end
Run Code Online (Sandbox Code Playgroud)
所以HTML只是一个非标准名称的标准方法.
| 归档时间: |
|
| 查看次数: |
91 次 |
| 最近记录: |