【问题标题】:undefined method `include?' for nil:NilClass (NoMethodError)未定义的方法“包括?”对于 nil:NilClass (NoMethodError)
【发布时间】:2014-06-14 23:41:54
【问题描述】:

我有以下代码,并且正在使用 ARGV。我会这样做,以便当用户离开空 ARGV 时,显示一些消息。

=begin

    TLDentifier developed by Arsh Leak. 2014.
    Commands:
        --display   :   Show all TLDs registered.
        --help      :   Show more informations.
        target.com

=end

   class String
    def green;          "\033[32m#{self}\033[0m" end
    def blue;           "\033[34m#{self}\033[0m" end
    def cyan;           "\033[36m#{self}\033[0m" end
    def bold;           "\033[1m#{self}\033[22m" end
   end


   system("clear")

   domains  =   {
    ".br"       =>  "Brazilian",
    ".com"      =>  "Comercial",
    ".aero"     =>  "Aircraft",
    ".biz"      =>  "Business",
    ".coop"     =>  "Cooperative",
    ".edu"      =>  "Educational",
    ".gov"      =>  "Government",
    ".info"     =>  "Information",
    ".int"      =>  "International organization",
   }

   def head()
    "TLDentifier".green.bold
   end
   puts head()
   name =   ARGV.first
   puts "[#{name}]".blue.bold
   domains.each do |domain, etn|
     if name.include? (domain)
       puts "["+domain.cyan+"]  is a "+etn+" Domain."
    elsif name  == "--help"
        system("clear")
        puts head()
        puts ""
        puts "Development.".cyan
        puts "Developed by "+"Arsh Leak. 2014."
        puts ""
        puts ""
        puts "GitHub.".cyan
        puts "github.com/4rsh"
        puts ""
        puts "Facebook.".cyan
        puts "facebook.com/doxnetwork"
        puts ""
        puts "Blog.".cyan
        puts "doxnetwork.com/"
        puts ""
        puts "Credits.".cyan
        puts "Prof. Eric Weinstein."
        puts ""
        puts "How to.".cyan
        puts "If you want to identify all TLDs, type:"
        puts "$ ruby ltdentifier.rb --display".green
        puts ""
        puts "If you want to identify a specific TLD, type:"
        puts "$ ruby ltdentifier.rb www.website.com/dir or www.website.com.".green
        puts ""
    elsif name == "--display"
        head()
        puts "Domain:".green+domain+" -"+" Entity: ".green+etn
      end
 end

而且,脚本返回此错误:

tld.rb:302:in block in <main>': undefined methodinclude?'对于 nil:NilClass (NoMethodError) 来自 tld.rb:301:in each' from tld.rb:301:in'

【问题讨论】:

    标签: ruby-on-rails ruby include undefined


    【解决方案1】:

    当没有传递任何参数时,ARGV.first 返回nil,它不是字符串,因此不会响应include?nil 的行为类似于 false,因此您可以通过输入类似的代码来测试这一点

    unless name
      puts "Need at least one argument"
      exit
    end
    

    在您第一次使用 name 之前。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-15
      • 2013-11-14
      • 2013-01-14
      • 2017-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多