class IRB::OutputMethod

irb 中用于 IO 的抽象输出类。主要由 IRB::Notifier 在内部使用。您可以定义自己的输出方法以与 Irb.newContext.new 一起使用。

公共实例方法

parse_printf_format(format, opts) 点击以切换源代码

如果给定的 format 中从 printf 成功匹配正则表达式,则返回一个包含给定 formatopts 的数组,供 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。

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