在 ruby​​ 中按时间查找最近的记录

发布于 2024-11-27 12:06:37 字数 472 浏览 0 评论 0原文

下面的代码可以工作,但看起来不太像 ruby​​,所以我正在寻找更好的方法来实现相同的目的。

#Grab the events from the page 
  events = page.events.sort_by{|e| e.start_time}

  upcoming = []
  past = []

  events.each do |e|
    if e.start_time >= Time.now
      upcoming.push(e)
    end
    if e.start_time < Time.now
      past.push(e)
    end
  end

 # show the most nearest event (current events if exist)
 event_to_show = (upcoming.count < 0) ? upcoming.first : past.last

The following code works but doesn't seem very ruby-like so I am looking for a better way to achieve the same.

#Grab the events from the page 
  events = page.events.sort_by{|e| e.start_time}

  upcoming = []
  past = []

  events.each do |e|
    if e.start_time >= Time.now
      upcoming.push(e)
    end
    if e.start_time < Time.now
      past.push(e)
    end
  end

 # show the most nearest event (current events if exist)
 event_to_show = (upcoming.count < 0) ? upcoming.first : past.last

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浪漫人生路 2024-12-04 12:06:37

您可以使用partition方法来简化代码。

http://www.ruby-doc.org/core/classes/Enumerable .html#M001496

events = page.events.sort_by(&:start_time)

upcoming, past = events.partition{|e| e.start_time >= Time.now}

event_to_show = (upcoming.count < 0) ? upcoming.first : past.last

You can use partition method to simplify the code.

http://www.ruby-doc.org/core/classes/Enumerable.html#M001496

events = page.events.sort_by(&:start_time)

upcoming, past = events.partition{|e| e.start_time >= Time.now}

event_to_show = (upcoming.count < 0) ? upcoming.first : past.last
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文