メソッドチェインで呼び出せるようにメソッドを作成してみる

以前コマンドプロンプト上で動くTwitterクライアントを作った。
それを他の人に見ても、分かりやすいコードになるようにつくり直してみている。
また、わからないながら、少しずつ調べながらオブジェクト指向っぽくかければなぁと。
#オブジェクト指向らしく書けてるかどうかは不明(・ω・`)…

メソッドチェインを使いたい、けど…

以前のコードでは、タイムライン取得と表示を1つのメソッド内に書いていたが、今回は分けることにした。
分けると、取得したタイムラインを、表示のメソッドに方になにかの方法で渡さないといけないわけで…。
ここで出来ればメソッドチェインの形で使えれば、見た目もすっきりするし、使いやすくていいかと思うのだけど……
メソッドチェインの形で使うためにどんなふうに書けばいいのかわからない!!

ちなみにメソッドチェインてこんなやつ↓


"ABC".downcase.reverse #=> "cba"
この例では、"abc".downcase #=> "abc" 大文字を小文字へ変換し、
"abc".reverse #=> "cba" で逆順に並び替え。


メソッドチェインにするためには、左側にある関数の返り値が右にある関数のメソッドが属するオブジェクトでないといけないはず…。

実際に取得したタイムラインはArrayオブジェクトなようなので、
Arrayオブジェクトに自分でメソッド追加が出来れば、メソッドチェインが作れるはず…

と、調べてみたところ、クラスにメソッドを追加することは普通にできるらしい…(・ω・`)
ということで、てきとーに書いてみた。

実際に書いたもの


# -*- coding: utf-8 -*-
require 'twitter'

# TL取得
class MyClass
def getHome
timeline = Twitter.home_timeline.reverse
end
end

# 既存クラスへメソッドを追加
class Array
def show
self.each do |tweet|
scl_name = tweet.user.screen_name
tw_text = tweet.text
puts "#{scl_name}:"
puts "#{tw_text}"
end
end
end

test = MyClass.new
test.getHome.show

一応試してみたが、他のコードを実行したとき、
Arrayにはshowメソッドはなかったので、クラスへのメソッド追加は追加したコードのみの効果だけの様子。