【问题标题】:How to print all methods of Fixnum class in ruby如何在ruby中打印Fixnum类的所有方法
【发布时间】:2017-07-31 10:37:24
【问题描述】:

我想在 ruby​​ 中打印 Fixnum 类的所有方法。当我输入Fixnum.methods 时,它给出了我不理解的这种类型的输出。

[:allocate, :superclass, :<=>, :module_exec, :class_exec, :<=, :>=, :==, :===, :include?, :included_modules, :ancestors, :name, :public_instance_methods, :instance_methods, :private_instance_methods, :protected_instance_methods

【问题讨论】:

  • “它给出了我不理解的这种类型的输出。” - 是的,这些是方法的名称,您可以在 Fixnum 上调用它们。你希望看到什么?
  • “它给出了我不理解的这种类型的输出”——这是一个陈述,而不是一个问题。
  • 您的预期结果/输出是什么?

标签: ruby class methods


【解决方案1】:

您可能想要实例方法:

Fixnum.instance_methods

过滤来自Object的那些:

Fixnum.instance_methods - Object.instance_methods

【讨论】:

  • 还有Fixnum.instance_methods(false) 仅用于Fixnum 上声明的那些。而且,恕我直言,过滤掉Kernel.methodObject.methods 更有意义。
  • @mudasobwa false 也会过滤来自 Numeric 的内容。
  • 这一切都取决于OP对“Fixnum方法”的定义。这可能是 Fixnum 拥有的方法或 Fixnum 响应的方法或介于两者之间的任何方法,即从 Integer、Numeric、Comparable、Object、Kernel 和/或 BasicObject 继承的方法(if 我们正在谈论关于实例方法)。
【解决方案2】:

考虑安装pry

pryirb 的更好版本,它允许浏览类和对象“就像它们是文件夹一样”。参见示例

$ pry
[1] pry(main)> ls Fixnum
Object.methods: yaml_tag
Fixnum#methods: 
  %   +   <    ==   >>   bit_length  fdiv       odd?  to_f   ~
  &   -   <<   ===  []   div         inspect    ord   to_s 
  *   -@  <=   >    ^    divmod      magnitude  size  zero?
  **  /   <=>  >=   abs  even?       modulo     succ  |    
[2] pry(main)>
...

【讨论】:

    【解决方案3】:

    您得到的输出是作为符号的方法名称数组。因此,如果您想打印它们,请这样做:

    Fixnum.methods.each { |method| puts method }
    

    【讨论】:

      【解决方案4】:

      这是一个 ruby​​ 数组,方法名称用符号表示(另一个 ruby​​ 东西)。你可以这样做

      Fixnum.methods.each { |method| puts method }
      

      从 ruby​​ 2.4.0 及更高版本开始

      Integer.methods.each { |method| puts method }
      

      【讨论】:

      • 只是puts Integer.methods :)
      • @SergioTulentsev Integer.methods.each(&amp;method(:puts)) 更干净,不是吗?
      • @mudasobwa 不喜欢积木,我敢肯定:D
      • @mudasobwa:我明白了,所有这些灵丹妙药都在影响你的思维。 :)
      • @SergioTulentsev 它让我恢复了理智;)
      猜你喜欢
      • 1970-01-01
      • 2015-07-27
      • 2022-08-03
      • 2011-08-07
      • 1970-01-01
      • 2020-09-08
      • 1970-01-01
      • 2023-02-10
      • 1970-01-01
      相关资源
      最近更新 更多