gpt4 book ai didi

ruby-on-rails - 如何使用常量名称而不是其分配的值将常量数组转换为字符串

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

例如:

ABC = 'abc'
DEF = 'def'
XYZ = 'anything'
LIST_ALL = [ABC, DEF, XYZ]

如果我这样做

LIST_ALL.reject(&:blank?).join(', ') # => "abc, def, anything"

我正在寻找的是获取常量名称,而不是它们的值预期输出:

LIST_ALL.something() #=> "ABC, DEF, XYZ"

方法一:

class X
ABC = "abc"
DEF = "def"
GHI = ""
XYZ = "anything"
LIST_ALL = %w(ABC DEF GHI XYZ)

def self.something()
puts LIST_ALL.reject{|c| c.constantize.blank?}.join(', ')
# puts LIST_ALL[0].constantize
end
end

错误:

(NameError)  uninitialized constant ABC;

最佳答案

如我所见,Ruby 没有明确的实例命名钩子(Hook)。但是,类可以。

CONSTANT = 'my constant value'
instance = Class.new
CONSTANT = instance
instance.name.to_s
=> "CONSTANT"

不幸的是,这会扰乱您的常量值,而这不是您想要的。

无论如何,我看到的解决方案是停止直接使用常量并使用散列。就像:

MY_HASH  = { 'ABC' => 'abc', 'DEF' => 'def' }
puts "constant names are #{MY_HASH.keys.join(', ')}"
=> "constant names are ABC, DEF"

puts "constant values are #{MY_HASH.values.join(', ')}"
=> "constant values are abc, def"

如果您仍然想搞乱元编程,check this answer .

关于ruby-on-rails - 如何使用常量名称而不是其分配的值将常量数组转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48774777/

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