irb中方法的制表符完成,使用哪种方法?

时间:2014-05-08 12:20:53

标签: ruby irb

在irb中进行实验时,我经常调用制表符来显示目标对象的可用方法列表。

输出此方法名称列表的函数是否可以是在Object或BasicObject中定义的函数,还是由irb本身实现的函数?

我假设这个列表是调用public_methods返回的数组的格式化结果,但列表似乎有所不同:

1.9.3-p448 :026 > 1.
Display all 115 possibilities? (y or n)
                              1.divmod                      1.inspect                     
1.numerator                   1.respond_to?                 1.to_enum
1.__id__                      1.downto                      1.instance_eval
1.object_id                   1.respond_to_missing?         1.to_f                   
1.__send__                    1.dup                         1.instance_exec
1.odd?                        1.round                       1.to_i               
1.abs                         1.enum_for                    1.instance_of?                                         

1.9.3-p448 :027 > 1.public_methods.sort
 => [:!, :!=, :!~, :%, :&, :*, :**, :+, :+@, :-, :-@, :/, :<, :<<, :<=, :<=>, :==, :===,
     :=~, :>, :>=, :>>, :[], :^, :__id__, :__send__, :abs, :abs2, :angle, :arg,
     :as_null_object,     :between?, :ceil, :chr, :class, :clone, :coerce, :conj,
     :conjugate, :define_singleton_method,     :denominator, :display, :div

例如,没有任何操作员方法显示在选项卡列表中。那么,标签列表来自哪里?

1 个答案:

答案 0 :(得分:1)

IRb中的完成由irb/completion标准库提供,遗憾的是,该库未记录。您可以在此处找到您感兴趣的案例的来源:https://GitHub.Com/Ruby/Ruby/blob/trunk/lib/irb/completion.rb#L149-195