如何在Ruby中创建一个(方法|函数| IDK)与另一个相同?

时间:2011-05-20 19:12:08

标签: ruby function twitter methods alias

查看https://github.com/ip2k/earthquake/blob/master/lib/earthquake/commands.rb#L106

我想基本上做alias :rt :retweet,但这不起作用

command %r|^:retweet\s+(\d+)$|, :as => :retweet do |m|
  target = twitter.status(m[1])
  if confirm("retweet 'RT @#{target["user"]["screen_name"]}: #{target["text"]}'")
    async_e { twitter.retweet(m[1]) }
  end
end

command %r|^:retweet\s+(\d+)\s+(.*)$|, :as => :retweet do |m|
  target = twitter.status(m[1])
  text = "#{m[2]} #{config[:quotetweet] ? "QT" : "RT"} @#{target["user"]  ["screen_name"]}: #{target["text"]} (#{target["id"]})"
  if confirm("unofficial retweet '#{text}'")
    async_e { twitter.update(text) }
  end
end

我如何让:rt:retweet做同样的事情而不仅仅重新定义整个块,而是用:rt代替:retweet(我已经完成了让它工作,但它不是一个好的解决方案,我知道必须有一个更好的方法。)

1 个答案:

答案 0 :(得分:0)

此处定义command方法:

https://github.com/ip2k/earthquake/blob/master/lib/earthquake/input.rb#L44

如果你看一下身体,看起来你应该省略块来创建一个别名:

command %r|^:retweet\s+(\d+)$|, :as => :rt