[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

In This Thread