【问题标题】:Pass a method inside a symbol in Map function在 Map 函数中的符号内传递方法
【发布时间】:2020-02-24 06:41:54
【问题描述】:

有人可以解释一下,我怎样才能在给我 Map 的符号内传递一个方法。 这是我的方法

def visited_venues
  Profile.find(1432).bookings.map(&:venue).uniq
end

现在我想做类似的事情

def visited_venues
 Profile.find(1432).bookings.map(&:venue.kept).uniq
end

这会在我的数据库中返回我所有未丢弃的内容,当我尝试这样做时,请始终返回我undefined,因为 Venue 是一个符号。 感谢您的帮助和解释。

【问题讨论】:

  • 如果你必须调用一个方法链,你需要传递一个块。传递符号只是一个捷径。或者,您可以调用两次 map。

标签: ruby-on-rails arrays ruby dictionary methods


【解决方案1】:

而不是做

Profile.find(1432).bookings.map(&:venue.kept).uniq

试试

Profile.find(1432).bookings.map { |booking| booking.venue.kept }.uniq

用 Pry 进行测试

["hi", "bye"].map(&:upcase) -> ["HI", "BYE"]
["hi", "bye"].map(&:upcase.downcase) -> ["HI", "BYE"]

记住

(&:method) is just a shortcut for { |el| el.method }

【讨论】:

  • 感谢@TedTran2019,这将是最好的解决方案,谢谢
猜你喜欢
  • 1970-01-01
  • 2015-07-19
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 2020-05-23
  • 2014-06-05
  • 2014-06-18
  • 1970-01-01
相关资源
最近更新 更多