😊
【bugs.ruby Advent Calender】StringIO#to_s を #string の alias にする提案【15日目】
bugs.ruby Advent Calender 15日目の記事です。
これはなに
今年1年間通してみてきた bugs.ruby のチケットの中から気になったものを1つずつ取り上げていく Advent Calender です。
取り上げるチケットは基本的にこのブログで取り上げたものになります。
記事のまとめは ここを参照 してください。
[Feature #20703] Alias StringIO#string to StringIO#to_s
StringIO#string
の alias として StringIO#to_s
を追加したいという提案になります。
例えば StringIO
のオブジェクトを puts
したり式展開する場合に都度 #string
を呼びさなくてよくなる利点とかがあったりします。
require "stringio"
def hello_world
puts "Hello, world"
end
# 標準出力の結果を文字列で取得するコード
output = StringIO.new
tmp, $stdout = $stdout, output
# このメソッド内の標準出力を取得したい
hello_world
$stdout = tmp
# output から値を取得したい場合に都度 string に変換する必要がある
puts "output: #{output.string}" # output: Hello, world
# 現状の #to_s の出力結果
puts "output: #{output}" # output: #<StringIO:0x00007907ebcd1fb0>
StringIO
は上記のような使い方をすることが多いので #to_s
があると便利かも?と思っていたんですが『 StringIO
は IO
のようなオブジェクトであり String
のようなオブジェクトではない』等の理由にこの提案は却下されています。
まあ、それはそうかあ。
Discussion