Sorbet 推断出 的类型为true
TrueClass, 的类型false
为FalseClass
。如果它改为推断,通常会很好T::Boolean
。为什么不使用特殊情况true
并false
改为使用类型T::Boolean
?
可以使用类型注释来解决此问题,T.let(true, T::Boolean)
例如初始化变量,但不必提供这些额外信息会很好。
# typed: true
T.reveal_type(true) # Revealed type: `TrueClass`
T.reveal_type(false) # Revealed type: `FalseClass`
extend T::Sig
sig {params(x: T::Boolean).void}
def test(x)
var = true
10.times do
var = false # Changing the type of a variable in a loop is not permitted
end
end
false
循环中对to的赋值var
会导致引发错误,因为类型var
正在从TrueClass
to更改FalseClass
。