open('test.jpg') { |f| while record = f.read(256) end }
我注意到没有用open这个方法前面没有任何对象,想请问下是哪个对象调用了open这个方法呢?是Object么?
open
Object
open("/home/test.png") { |f| puts f puts f.class }
#<File:0x00000002114200> File
方法没有调用对象时,默认为当前环境的 self。
irb(main):001:0> self main irb(main):002:0> self.class Object < BasicObject
#2 楼 @541991a 要深揪的话其实是属于 Kernel 的
> self.class.ancestors => [Object, Kernel, BasicObject]
无文档无真相
因为 Object 继承 Kernel 所以 Object 也能调用这个方法
#3 楼 @flemon1986 了解了
看文档是说 默认把 Kernel 这个 module include 进来了
感谢楼上所有同学