😊

【bugs.ruby Advent Calender】StringIO#to_s を #string の alias にする提案【15日目】

2024/12/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 があると便利かも?と思っていたんですが『 StringIOIO のようなオブジェクトであり String のようなオブジェクトではない』等の理由にこの提案は却下されています。
まあ、それはそうかあ。

関連

GitHubで編集を提案

Discussion