Ruby 链式方法/数组

标签 ruby arrays chainable

如何实现“<<”以在用作可链接方法时具有相同的行为?

class Test
  attr_accessor :internal_array

  def initialize
    @internal_array = []
  end

  def <<(item)
    @internal_array << :a
    @internal_array << item
  end
end

t = Test.new
t << 1
t << 2
t << 3
#t.internal_array => [:a, 1, :a, 2, :a, 3]
puts "#{t.internal_array}" # => a1a2a3

t = Test.new
t << 1 << 2 << 3
#t.internal_array => [:a, 1, 2, 3]
puts "#{t.internal_array}" # => a123 , Why not a1a2a3?

我希望两种情况都给出相同的结果。

最佳答案

self 添加到 << 方法的最后一行以返回它。照原样,您将隐式返回数组,而不是实例。

关于Ruby 链式方法/数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3375104/

相关文章:

arrays - 如何遍历数组并根据 PostgreSQL 查询的结果构造对象

没有类的 JavaScript/Typescript 可链接函数

jquery - 如何将其变成可链接的 jquery 函数?

ruby - 如何在 Ruby 1.8.7 中将 Microsoft Office "Smart"或 "Curly"引号/撇号转换为 ASCII 或 UTF-8 "Straight"引号/撇号?

ruby-on-rails - 使用 collection_select 并从 sqlite3 收到意外错误 - 有人知道为什么吗?

ruby-on-rails - 通过 ROR 连接到 AppNexus API

java - 检查字符串包含数组列表中的属性

ruby - 使用异或密码解密后无法获得正确的编码

java - 模拟世界游戏的数据结构