[ruby-list:50876] Re: パス名なのかIO(っぽい)オブジェクトなのかを検出する方法
From:
Tietew <tietew@...>
Date:
2020-02-24 12:57:38 UTC
List:
ruby-list #50876
ありがとうございます。 On Fri, 21 Feb 2020 21:08:57 +0900 Tadashi Saito <tad.a.digger@gmail.com> wrote: > 「パス名」は文字列のはずなので、respond_to?(:to_str)とか:to_sで > 場合分けするのはどうでしょうか? > 少なくともIO, StringIOにはないメソッドのようでした。 がしかし、 ・Pathname#to_s ... ある ・Pathname#to_str ... ない ・IO#to_s ... ない ・StringIO#to_s ... ある(←!) $ ruby -rstringio -ve 'p StringIO.new.to_s' ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux] "#<StringIO:0x0000561329b79ed0>" :( > 別のやり方として、「IOっぽい」という判定にrespond_to?(:pos)を追加するのもありかもしれません。 > ただこちらは、あまり調べていません。 そうなるのかなあ? -- Tietew <tietew@tietew.net> Blog: http://www.tietew.jp/ PGP: 26CB 71BB B595 09C4 0153 81C4 773C 963A D51B 8CAA