我想在字符串流式传输到终端时使用某些字符串方法。例如,我想重写String#to_s
。我希望在终端上使用ANSI颜色代码传递字符串,而不是将其写入文件。为此,我必须访问当前正在写入的IO。我是否可以访问标识当前读/写上下文的变量?
答案 0 :(得分:2)
像to_s
这样的字符串上的方法非常重要,修改它们可能会破坏很多依赖代码。您应该修改String
方法,例如IO
,puts
等,而不是修改print
方法。您可以为IO
的每个子类提供不同的定义例如File
(多态)。然后,您不需要识别IO类。
答案 1 :(得分:0)
IO#isatty
可能就是你要找的东西。但塞尔吉奥的建议仍然是更好的选择。