概要
あまり使っていなかった tap の使い方を簡単にまとめてみました
環境
- macOS 10.15.7
- Ruby 2.7.2p137
メソッドチェインとして使う
メソッドの返り値を self にすることで自信を返却しメソッドチェインできます
self ではなく self.tap にしても同じです
class MyClass
def initialize
@name = "hawk"
end
def hello
print("hello")
self
end
def world
puts("world")
self
# self.tap {}
end
attr_reader :name
end
cls = MyClass.new
cls.hello.world
=> helloworld
オブジェクトを tap するとデバッグ的なことができる
tap 自体は self を引数に取って self を return するメソッドです
つまり tap をメソッドチェインすることができます
class MyClass
def initialize
@name = "hawk"
end
def hello
print("hello")
self.tap {}
end
def world
puts("world")
self
end
attr_reader :name
end
cls = MyClass.new
cls.
tap {|c| puts c.name }.
tap {|c| c.hello.world }.
=> hawk,helloworld
返り値がほしい場合
tap の最後で break を使うと返り値がもらえます
class MyClass
def initialize
@name = "hawk"
end
def hello
print("hello")
self.tap {}
end
def world
puts("world")
self
end
attr_reader :name
end
cls = MyClass.new
ret = cls.
tap {|c| puts c.name }.
tap {|c| c.hello.world }.
tap {|c| break "break" }
puts ret
=> hawk,helloworld,break
ちなみに break したあとにまた tap することができます
上記の場合は String のオブジェクトが渡されます
最後に
使えるようになると結構便利な機能な気がします
可読性という意味だと tap に慣れていない人だと読みづらくなる場合もあるかもしれません
0 件のコメント:
コメントを投稿