class MyString < String
def anti_capitalize
capitalize.swapcase
end
def empty?
self == "empty"
end
# ここまで変更するところがない
# ここから機能に処理の追加
# あまりいい例が思い浮かばない。実際にはよくあるパターンですが
# chompで、末尾文字の削除がおこったかどうか、STDERRにメッセージを出す
def chomp(rs=$/)
x = self #処理前を保存しておく
y = super #親クラスのchomp呼び出し
if x == y
STDERR.puts "削除は無し"
else
STDERR.puts "削除発生!"
end
y
end
end
#テスト
a=MyString.new("abc")
puts a.anti_capitalize
b=MyString.new("empty")
puts a.empty?
puts b.empty?
c=MyString.new("abc\n")
puts a.chomp
puts b.chomp("y")
puts c.chomp
上記の場合のことを言ったつもりなのですが、うまく表現できず申し訳ありません。
お礼
ありがとうございました。これで何かすっきりした気分です。