当我在Crystal和String
和Int32
中使用类型联合时,然后为它分配了一个值,它可以正常工作
test : (String | Int32) = 100
puts "Hello, World! #{test}"
结果
~/Projects/learn-crystal crystal hello.cr
Hello, World! 100
但是,当我将Int32
更改为UInt32
时,它将变成错误
test : (String | UInt32) = 100
puts "Hello, World! #{test}"
结果
~/Projects/learn-crystal crystal hello.cr
Showing last frame. Use --error-trace for full trace.
In hello.cr:1:1
1 | test : (String | UInt32) = 100
^---
Error: type must be (String | UInt32), not Int32
但这很好用
test : (String | UInt32) = 100_u32
puts "Hello, World! #{test}"
结果
~/Projects/learn-crystal crystal hello.cr
Hello, World! 100
为什么Crystal不会自动推断一个整数和字符串类型的并集?