Ruby 避免警告:已在“case when”中初始化常量

Ruby 避免警告:已在“case when”中初始化常量,ruby,switch-statement,warnings,Ruby,Switch Statement,Warnings,现在有很多类似的问题,但没有一个在表达时出现警告的情况 我得到一个警告:在switch语句中,我的每个case都已初始化常量,我知道在ruby switch=case | case=when中调用它们是不同的,但我想你明白了 我的代码: Type = case entity.class.to_s when 'A' then 1 when 'B' then 10 when 'C' then 2 when 'D' then 7 else raise "Unknown Type" end 我如何摆脱

现在有很多类似的问题,但没有一个在表达时出现警告的情况

我得到一个警告:在switch语句中,我的每个case都已初始化常量,我知道在ruby switch=case | case=when中调用它们是不同的,但我想你明白了

我的代码:

Type = case entity.class.to_s
when 'A' then 1
when 'B' then 10
when 'C' then 2
when 'D' then 7
else raise "Unknown Type"
end
我如何摆脱警告,因为我只是在顶部初始化它,还是我遗漏了什么

编辑: 我的代码在一个循环中。像这样:

loopcounter = 0
EntityType = 'test'
while loopcounter < 4
    EntityType = case 'StDm'
    when 'StDm' then 1
    when 'Drt' then 10
    when 'Pst' then 2
    when 'StSnet' then 7
    else raise "Unknown EntityType"
    end
    loopcounter += 1
end
puts EntityType
我真傻

由于变量开头的大写字母,ruby认为它是一个常量。当然啊


现在我清楚了,为什么会发生错误。

在case语句之后,您试图用一些值重新分配常量类型。您从该位置收到警告。/请参见此以停止警告。您无法从发布的代码中获得警告。它一定是源于一些你没有发布的代码,或者源于与一些你没有发布的代码的某种交互,因此我们不能帮助你。也看看这个…是的,我意识到,我忘了说,我在一个…每个do循环中有这部分代码。这是我的问题。