class IRB::OutputMethod
irb 中用于 IO 的抽象输出类。主要由 IRB::Notifier
在内部使用。您可以定义自己的输出方法以与 Irb.new
或 Context.new
一起使用。
公共实例方法
parse_printf_format(format, opts) 点击以切换源代码
如果给定的 format
中从 printf
成功匹配正则表达式,则返回一个包含给定 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 irb/output-method.rb, line 42 def parse_printf_format(format, opts) return format, opts if $1.size % 2 == 1 end
pp(*objs) 点击以切换源代码
打印给定的 objs
,对每个对象调用 Object#inspect。
有关详细信息,请参阅 puts
。
# File irb/output-method.rb, line 58 def pp(*objs) puts(*objs.collect{|obj| obj.inspect}) end
ppx(prefix, *objs) 点击以切换源代码
打印给定的 objs
,对每个对象调用 Object#inspect,并附加给定的 prefix
。
有关详细信息,请参阅 puts
。
# File irb/output-method.rb, line 66 def ppx(prefix, *objs) puts(*objs.collect{|obj| prefix+obj.inspect}) end
print(*opts) 点击以切换源代码
打开此方法以实现您自己的输出方法,如果您未在自己的类中定义 print
,则会引发 NotImplementedError。
# File irb/output-method.rb, line 14 def print(*opts) raise NotImplementedError end
printf(format, *opts) 点击以切换源代码
扩展 IO#printf 以使用 parse_printf_format
为 Kernel#sprintf 格式化给定的 opts
# File irb/output-method.rb, line 25 def printf(format, *opts) if /(%*)%I/ =~ format format, opts = parse_printf_format(format, opts) end print sprintf(format, *opts) end
printn(*opts) 点击以切换源代码
打印给定的 opts
,并使用换行符分隔。
# File irb/output-method.rb, line 19 def printn(*opts) print opts.join(" "), "\n" end
puts(*objs) 点击以切换源代码
对给定的 objs
中的每个元素调用 print
,后跟一个换行符。
# File irb/output-method.rb, line 48 def puts(*objs) for obj in objs print(*obj) print "\n" end end