w00*_*00d 13 ruby namespaces module class net-http
例如:
require 'net/http'
uri = URI('http://example.com/some_path?query=string')
Net::HTTP.start(uri.host, uri.port) do |http|
request = Net::HTTP::Get.new uri
response = http.request request # Net::HTTPResponse object
end
Run Code Online (Sandbox Code Playgroud)
什么是正确/擦除方式摆脱Net::HTTP?即HTTP::Get.new()或只是Get.new()
tad*_*man 17
如果要缩短这些,可以只导入该命名空间:
Net::HTTP.start(...)
include Net
# HTTP.start(...)
Run Code Online (Sandbox Code Playgroud)
当你积极进口时要小心,因为如果你被带走,它可能会引起你班上的冲突.
另一种方法是创建别名:
HTTP = Net::HTTP
Get = Net::HTTP::Get
Run Code Online (Sandbox Code Playgroud)
"正确"的方法就是把它拼出来,不要太过慌张.典型的Ruby程序会将这种低级行为隐藏在抽象层之下,因此它很少有大问题.
小智 5
我希望这个例子能澄清事情.
module Foo
def foo
"foo"
end
end
class Bar
include Foo
def bar
"bar"
end
end
Bar.new.foo # foo
Bar.new.bar # bar
class Baz
extend Foo
self.def baz
"baz"
end
end
Baz.foo # foo
Baz.baz # baz
Run Code Online (Sandbox Code Playgroud)
使用导入或扩展时,请确保您知道自己在做什么.您最终可能会覆盖一个您可能不想覆盖的方法.
| 归档时间: |
|
| 查看次数: |
12643 次 |
| 最近记录: |