gpt4 book ai didi

ruby-on-rails - 为什么在引用对象属性时应该使用字符串而不是符号?

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

我有一个 Door 对象,它有一个类型为 stringstate 属性。它只能是以下元素之一:%w[open shut locked]

在符号上使用字符串是否有任何含义或原因?

door.update_attributes(state: :open)
door.update_attributes(state: 'open')

在 Rails 4 中我们可以这样做:

Door.order(created_at: :desc)

那么我为什么不应该这样做呢?

Door.where(state: :open) # vs state: 'open'

它们是否等同于所有意图和目的?我更喜欢使用符号,因为它看起来更干净,而且在数据库中,符号无论如何都是一个字符串。

最佳答案

恕我直言,您的直觉是正确的。

符号比字符串更适合表示枚举类型的元素,因为它们是不可变的。虽然它们确实没有被垃圾收集,但与字符串不同,任何给定符号始终只有一个实例,因此对大多数状态转换应用程序的影响很小。而且,虽然对于大多数应用程序而言性能差异也很小,但符号比较比字符串比较快得多。

另见 Enums in Ruby

关于ruby-on-rails - 为什么在引用对象属性时应该使用字符串而不是符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17845753/

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