更惯用的 Ruby 编写方式是什么?

发布于 2024-08-03 08:53:26 字数 185 浏览 2 评论 0原文

  if params[:parent_type] == "Order"
    parent_id = nil
  else
    parent_id = params[:parent_id]
  end

Ruby 人会因为我这样写而嘲笑我吗?它看起来并不像我见过的一些 Ruby 代码那样特别简洁。

  if params[:parent_type] == "Order"
    parent_id = nil
  else
    parent_id = params[:parent_id]
  end

Would a Ruby person laugh at me for writing it this way? It doesn't seem particularly concise like some Ruby code I've seen.

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

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

发布评论

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

评论(6

錯遇了你 2024-08-10 08:53:26

这对我来说看起来完全合理。您可以将赋值移到 if ( parent_id = if params...) 前面或使用三元,但我认为结果不会更好。

如果该行之前parent_id为零或未定义,您可以简单地编写:

parent_id = params[:parent_id] unless params[:parent_type] == "Order"

That looks perfectly reasonable to me. You could move the assignment in front of the if ( parent_id = if params...) or use the ternary, but I don't think the result would look better.

If parent_id is nil or undefined before that line you can simply write:

parent_id = params[:parent_id] unless params[:parent_type] == "Order"
梦中楼上月下 2024-08-10 08:53:26

按原样来说并没有什么问题,但可以变得更简洁:

parent_id = (params[:parent_type] == "Order") ? nil : params[:parent_id]

或者:

parent_id = if (params[:parent_type] == "Order")
    nil
else
    params[:parent_id]
end

Nothing really wrong with it as-is, but can be made more concise:

parent_id = (params[:parent_type] == "Order") ? nil : params[:parent_id]

Alternatively:

parent_id = if (params[:parent_type] == "Order")
    nil
else
    params[:parent_id]
end
魄砕の薆 2024-08-10 08:53:26

我认为这样就很好。我是一个 Ruby 人,我不会因为你这样写而嘲笑你。代码的作用很清楚,并且没有真正的代码重复,所以我不会担心它。

I think it's fine the way it is. I'm a Ruby person, and I wouldn't laugh at you for writing it that way. It's clear what the code does and there's no real code duplication, so I wouldn't worry about it.

心病无药医 2024-08-10 08:53:26

我喜欢:

parent_id = (params[:parent_type] == "Order" ? nil : params[:parent_id])

I like:

parent_id = (params[:parent_type] == "Order" ? nil : params[:parent_id])
2024-08-10 08:53:26

另一种变化:

parent_id = (params[:parent_type] == "Order") && params[:parent_id]

One more variation:

parent_id = (params[:parent_type] == "Order") && params[:parent_id]
倾城°AllureLove 2024-08-10 08:53:26

我们可以使用 Ruby 三元运算符。类似的东西:

parent_id = params[:parent_type] == "Order" ? nil : params[:parent_id]

如果 parent_id 设置为 nil 值,我们可以编写一个 except 语法:

parent_id = params[:parent_id] unless params[:parent_type] == "Order"

或者以不同的方式编写一个简单的 Ruby if-else

parent_id = if (params[:parent_type] == "Order")
  nil
else
  params[:parent_id]
end

:更多惯用的 Ruby 编码方式,我发现了一篇关于此的很棒的文章

We can use Ruby ternary operator. Something like it:

parent_id = params[:parent_type] == "Order" ? nil : params[:parent_id]

If parent_id is set with nil value, we can write an unless syntax:

parent_id = params[:parent_id] unless params[:parent_type] == "Order"

Or write a simple Ruby if-else in a different way you did it:

parent_id = if (params[:parent_type] == "Order")
  nil
else
  params[:parent_id]
end

For more Idiomatic Ruby way to code, I found an awesome article about that.

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