为什么这个命令在这个特定代码中不起作用?

时间:2010-12-17 21:00:09

标签: ruby

我该如何解决这个问题? 我试过了

Net::HTTP.new(@site).head('/').kind_of? Net::HTTPOK

但我收到了这个:

  

错误:在`kind_of?'中:需要类或模块(TypeError)

我认为我的代码有问题,你能看一下吗?我知道它非常混乱和非常糟糕,我是一名编程学生,我正在学习。如果您有任何改进的想法,请告诉我们!

此外,还有一些内容与其中包含的内容相混淆。出于某种原因,当我尝试结束所有defs时,我得到意外的结束错误。

这是我在上下文中的代码:

def begindownload
    require 'net/http'
    puts "Enter the URL of the site that you want to rip images from (use www.*website*.com/folder/file.html or other extension format):"
    while @site = gets.chomp
        puts "Querying " + @site 
        if Net::HTTP.new(@site).head('/').kind_of? Net::HTTPOK == true
            puts "Site is online!"
        else 
            puts "Site is offline. Try again."
        end
    end
end

2 个答案:

答案 0 :(得分:6)

在您的代码中,您使用的是:

if Net::HTTP.new(@site).head('/').kind_of? Net::HTTPOK == true

首先评估==,导致Net::HTTPOK == true被评估为false。然后声明的其余部分变为:

if Net::HTTP.new(@site).head('/').kind_of? false

导致您TypeError

在执行== true声明时,您无需检查if。如果if之后的语句评估为true,则会评估if。检查布尔值== true是否被视为不良格式。

答案 1 :(得分:0)

您是否尝试过.instance_of?