Ruby 类 << self

Ser*_*hyk 3 ruby class self

我知道什么

class << self 
Run Code Online (Sandbox Code Playgroud)

做。但这个技巧的根本机制是什么呢?

<<Ruby 中是二进制左移运算符

那么我们正在对变量进行二进制左移class

请澄清。

Nat*_*ate 6

这不仅仅是二进制左移 -<<在 Ruby 中也是单例类定义语法。使用此语法是因为 Ruby 中表示类的所有对象都是单例类。

  • @KarolyHorvath 与其说是“运算符重载”,不如说是简单的“方法定义”。“&lt;&lt;”方法*确实*对“Fixnum”对象执行按位移位,但对于通用对象完全未定义。如果某个东西不是可以超载的,那么你就不能超载! (4认同)
  • 以及 Array#push() 的替代语法,例如 arr &lt;&lt; element。 (3认同)