gpt4 book ai didi

ruby-on-rails - ruby on rails block 语法使用 & :

转载 作者:太空宇宙 更新时间:2023-11-03 16:57:56 26 4
gpt4 key购买 nike

假设我有一个问题模型和一个答案模型,问题有_很多答案(这是一个多项选择题)。

假设 questions 是 Question 对象的集合。

为了收集所有的答案,我可以这样做:

questions.collect(&:answers)

两个问题:

  1. 这个语法到底是什么意思?是否扩展为

    questions.collect { |q| q.answers } 

    还是这里发生了其他事情?

  2. 有什么办法吗

    questions.collect { |q| q.answers.shuffle } 

    使用相同的语法?

    collect(&:answers.shuffle) 

    没有这样做。

我似乎无法在网络上有关 ruby​​ block 的教程中找到它,并且搜索它也不起作用(搜索引擎忽略“&:”)。我在一些继承的代码中发现了它。

谢谢

最佳答案

是的,第一个问题是 N 重复的,但关于第二个问题:不,你不能链接方法。 但是,没有什么能阻止您 - 除了编写可能会让人困惑的代码 - 来创建您自己的工具:

class Symbol
def to_proc
proc do |obj|
self.to_s.split(/\./).inject(obj, :send)
end
end
end

p ["1", "2", "3"].map(&:"to_i.succ")
# [2, 3, 4]

您甚至可以找到发送参数的方法,尽管它可能不会很漂亮。

关于ruby-on-rails - ruby on rails block 语法使用 & :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4942285/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com