gpt4 book ai didi

ruby-on-rails - 这个 ruby​​ 函数在做什么

转载 作者:太空宇宙 更新时间:2023-11-03 17:39:10 24 4
gpt4 key购买 nike

在我戳的这个项目中,(我是 PHP 开发人员,不是 RoR),模态上有这个功能。

  def task 
@task ||= if search_key
Project.trop_fish.tasks.find(:first, :conditions => ["description like ?", "Search key: #{search_key}%"])
else
Project.trop_fish.tasks.find(:first, :conditions => ["(name = ? OR name like ?)","#{task_name}","#{task_name} {%}"])
end
end

所以它试图从名为 trop_fish 的项目中找到任务。但是顶部的@task 是什么。

是不是,将 if block 中的查找结果分配给 @task?

是不是一样

  def task 
if search_key
@task = Project.trop_fish.tasks.find(:first, :conditions => ["description like ?", "Search key: #{search_key}%"])
else
@task = Project.trop_fish.tasks.find(:first, :conditions => ["(name = ? OR name like ?)","#{task_name}","#{task_name} {%}"])
end
end

最佳答案

几乎,不完全是。这与此相同:

def task 
if search_key
@task ||= Project.trop_fish.tasks.find(:first, :conditions => ["description like ?", "Search key: #{search_key}%"])
else
@task ||= Project.trop_fish.tasks.find(:first, :conditions => ["(name = ? OR name like ?)","#{task_name}","#{task_name} {%}"])
end
end

||= 表示变量只有在尚未设置为不同值时才会被设置为新值。正如一些人评论指出的/更简单地说,如果 @tasknilfalse ,它将被设置为新值.

This portion of the RoR tutorial Michael Hartl 对 ||= 运算符做了很好的解释。

@pguardino 提出了一个很好的观点,PHP 程序员可能不熟悉这样一个事实,即如果在 ruby​​ 的方法中没有显式的 return 语句,它将返回最后一个非 -方法中的条件语句作为它的返回值,所以是的,@task 被返回。

is another bit of text在 RoR 教程中解释了为什么在从方法返回时使用 ||= 运算符是有利的。它很有用,因为它意味着第一次调用 task 方法将对数据库执行操作以检索任务,但在同一线程中对该方法的后续调用将返回 @task 而不调用数据库(因为 @task 变量已经设置。

关于ruby-on-rails - 这个 ruby​​ 函数在做什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8663047/

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