Noob并收到Google搜索代码的语法错误

时间:2013-10-15 02:01:44

标签: ruby search syntax

几乎从这个单词中逐字输入了代码,并收到以下语法错误消息。请帮忙!!

https://github.com/visionmedia/google-search/blob/master/examples/web.rb

我的代码:

require "rubygems"
require "google-search"

def find_item uri, query
    search = Google::Search::Web.new do |search|
        search.query = query
        search.size = :large
        search.each_response {print "."; #stdout.flush}
    end
        search.find {|item| item.uri =~ uri}
end

def rank_for query
    print "%35s " % query
    if item = find_item(/vision\-media\.ca/, query)
        puts " #%d" % (item.index +1)
    else
        puts " Not found"
    end
end

rank_for "Victoria Web Training"
rank_for "Victoria Web School"
rank_for "Victoria Web Design"
rank_for "Victoria Drupal"
rank_for "Victoria Drupal Development"

错误讯息:

Ruby Google Search:9: syntax error, unexpected keyword_end, expecting '}'
Ruby Google Search:11: syntax error, unexpected keyword_end, expecting '}'
Ruby Google Search:26: syntax error, unexpected $end, expecting '}'

3 个答案:

答案 0 :(得分:2)

你无意中评论了第9行的其余部分:

search.each_response {print "."}

请注意,Ruby中的#字符表示注释;即,# 包含右侧同一行的所有内容都被视为注释,并且不会编译为Ruby代码。

print 'this ' +  'is ' + 'compiled'
#=> this is compiled

print 'this' # + 'is' +  'not'
#=> this

请注意,括号{}表示法封装了块中包含的单个可执行行。但是,您要做的是执行两个命令。为此,使用Ruby的block表示法可能在语义上更具可读性:

search.each_response do
    print '.'
    STDOUT.flush
end

答案 1 :(得分:0)

而不是#stdout.flush,请输入$stdout.flush

答案 2 :(得分:-1)

find_item中do块的最后一行是:

search.each_response {print "."; #stdout.flush}

Ruby中的#标志着评论的开始。您已经注释掉了该行的其余部分,但在打开括号{之前没有注释掉。缺少它被关闭是你的错误的来源。

为了使您的代码正确,您应该将#更改为$以访问全局标准输出对象。