gpt4 book ai didi

ruby-on-rails - 传递类或字符串化的类名?

转载 作者:数据小太阳 更新时间:2023-10-29 07:55:41 25 4
gpt4 key购买 nike

在 Ruby 中传递类名还是字符串化类名更好?

例如,我有一个解析器/生成器,可以确定已解析记录的类类型。我将它传递给一个导入类,但我可以将类的名称作为字符串或其常量传递。有理由不做其中之一吗?

x = ParsedRecord.new(value: 1, type: MyClass)

对比

x = ParsedRecord.new(value: 2, type: 'MyClass')

进口商要么:

x.type.new

对比

x.type.constantize.new

通过该类(class)似乎更容易,但我并没有经常看到它(即 Rails 让您将关联的类名称字符串化)。也许它与加载顺序/自动加载有关?

最佳答案

除非需要延迟加载类名,否则最好直接传递常量。

原因是因为将 String 转换为相应的类名常量是一个额外的步骤,并且会增加一些执行开销。如果您已经有了类名,只需传递它即可。将其转换为字符串,然后再转换回常量没有任何优势。

之所以看到字符串在其他库中传递,是因为为了将 MyClass 作为参数传递,必须加载类定义。在某些情况下,例如在 Rails 中,您正在引用将被延迟加载的类的类名(这是 rescue_from 宏的典型情况)。使用 String 不会强制您加载类定义,直到您实际需要它为止。

关于ruby-on-rails - 传递类或字符串化的类名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28697005/

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