代码之家  ›  专栏  ›  技术社区  ›  Ishan Patel

在ruby中,直接传递方法名或通过用户输入响应方法有什么区别?

  •  0
  • Ishan Patel  · 技术社区  · 7 年前

    我编写了以下代码:

    obj = Object.new
    
    def obj.talk
        puts "Talk called"
    end
    
    if obj.respond_to?(talk)
        obj.send(talk)
    else
        puts "No talk"
    end
    

    输出如下:

    undefined local variable or method `talk' for main:Object (NameError)
    

    但当我通过用户输入传递它时,它的作用是:

    obj = Object.new
    
    def obj.talk
        puts "Talk called"
    end
    
    request = gets.chomp
    
    if obj.respond_to?(request)
        obj.send(request)
    else
        puts "No talk"
    end
    

    哪些输出 Talk called 输入字符串时 talk

    1 回复  |  直到 7 年前
        1
  •  0
  •   Ishan Patel    7 年前

    感谢@Amadan,它通过使用方法的符号名来工作。后续工作。

    obj = Object.new;
    
    def obj.talk
        puts "Talk called"
    end
    
    if obj.respond_to?(:talk)
        obj.send(:talk)
    else
        puts "No talk"
    end
    

    通话

    推荐文章