类 IRB::OutputMethod
irb 中 IO
的抽象输出类。主要用于 IRB::Notifier
的内部。您可以定义自己的输出方法,并使用 Irb.new
或 Context.new
来使用它。
公共实例方法
parse_printf_format(format, opts) 点击切换源代码
如果在给定的 format
中,来自 printf
的 Regexp
匹配成功,则返回一个包含给定 format
和 opts
的数组,供 Kernel#sprintf
使用。
% <flag> [#0- +] <minimum field width> (\*|\*[1-9][0-9]*\$|[1-9][0-9]*) <precision>.(\*|\*[1-9][0-9]*\$|[1-9][0-9]*|)? #<length modifier>(hh|h|l|ll|L|q|j|z|t) <conversion specifier>[diouxXeEfgGcsb%]
# File lib/irb/output-method.rb, line 48 def parse_printf_format(format, opts) return format, opts if $1.size % 2 == 1 end
pp(*objs) 点击切换源代码
打印给定的 objs
,对每个对象调用 Object#inspect
。
有关更多详细信息,请参阅 puts
。
# File lib/irb/output-method.rb, line 64 def pp(*objs) puts(*objs.collect{|obj| obj.inspect}) end
ppx(prefix, *objs) 点击切换源代码
打印给定的 objs
,对每个对象调用 Object#inspect
,并在末尾添加给定的 prefix
。
有关更多详细信息,请参阅 puts
。
# File lib/irb/output-method.rb, line 72 def ppx(prefix, *objs) puts(*objs.collect{|obj| prefix+obj.inspect}) end
print(*opts) 点击切换源代码
打开此方法以实现您自己的输出方法,如果您没有在自己的类中定义 print
,则会引发 NotImplementedError
。
# File lib/irb/output-method.rb, line 20 def print(*opts) raise NotImplementedError, "print" end
printf(format, *opts) 点击切换源代码
扩展 IO#printf
,使用 parse_printf_format
为 Kernel#sprintf
格式化给定的 opts
。
# File lib/irb/output-method.rb, line 31 def printf(format, *opts) if /(%*)%I/ =~ format format, opts = parse_printf_format(format, opts) end print sprintf(format, *opts) end
printn(*opts) 点击切换源代码
打印给定的 opts
,并以换行符作为分隔符。
# File lib/irb/output-method.rb, line 25 def printn(*opts) print opts.join(" "), "\n" end
puts(*objs) 点击切换源代码
对给定的 objs
中的每个元素调用 print
,并在其后添加一个换行符。
# File lib/irb/output-method.rb, line 54 def puts(*objs) for obj in objs print(*obj) print "\n" end end