-2

我正在用 Ruby 编写一个小脚本,它可以接收 Twitter 帖子并将它们进一步分解。当我针对它发送一个普通字符串(非推特)时,它可以正常工作并拆分大于 32 个字符的字符串。但是由于某种原因,我在使用 twitter 数据时遇到了这样的错误:

chunk': private method扫描中调用 ["twituser: foo.#yolo"]:Array (NoMethodError)

require 'rubygems'
require 'twitter'


Twitter.configure do |config|
  config.consumer_key       = ''
  config.consumer_secret    = ''
  config.oauth_token        = ''
  config.oauth_token_secret = ''
  #config.auth_method        = :oauth
end

def chunk(string,size)
        string.scan(/.{1,#{size}}/)
end

twitterfeed = Twitter.search("#yolo", :count => 1, :result_type => "recent").results.map do |status|
        "#{status.from_user}: #{status.text}"
end

twitterfeed.join
puts "#{twitterfeed}\n"

sendchunks = chunk(twitterfeed,32)
sendchunks.each do |string|
        puts "\x52\x31\x10\xAC\x4E\x31\x31\x32\x33\x34\x35\x36\x35\x41\x0E" + string + "\x0D\x0A"
        puts "#{string}\n"
        sleep(10)
end
puts "done\n"

那么为什么会有差异呢?我是 ruby​​ 新手,所以我试图弄清楚变量类型如何工作的差异。一个普通的字符串可以工作,但即使在数组到字符串的转换之后它也很糟糕。

谢谢!

[使用完整的脚本代码进行编辑,因为答案偏离轨道导致事情破裂]

解决方案是执行以下操作:

twitterfeed_string = twitterfeed.join
puts "#{twitterfeed_string}\n"
sendchunks = chunk(twitterfeed_string,32)
4

1 回答 1

2

错误说private methodscan' called for #Array。这是因为您没有存储twitterfeed.join('').to_s任何地方的结果。然后,您将twitterfeed作为数组传递给您的chunk方法。
你没有压倒一切twitterfeed

你可能想做

twitterfeed_as_string = twitterfeed.join
sendchunks = chunk(twitterfeed_as_string , 32)
于 2013-05-24T00:43:27.003 回答