上QQ阅读APP看书,第一时间看更新
2.2.3 在赋值时避免类型错误
在给变量赋值时,要注意表达式的类型必须与变量类型一致,否则将会引发编译错误。示例程序如下:
main() { var str: String var num: Int64 str = "123" // 将String类型表达式赋给String类型变量 num = 456 // 将Int64类型表达式赋给Int64类型变量 str = 456 // 编译错误:不能将Int64类型表达式赋给String类型变量 num = "123" // 编译错误:不能将String类型表达式赋给Int64类型变量 }
在以上示例程序中,将String类型的字面量"123"赋给String类型的变量str、将Int64类型的字面量456赋给Int64类型的变量num,这都是可以的。但是如果将Int64类型的字面量456赋给String类型的变量str、将String类型的字面量"123"赋给Int64类型的变量num,就会引发编译错误。读者在编程时,要注意避免这种错误。
如果需要将一个非String类型的表达式赋给String类型的变量,可以使用toString函数将非String类型的表达式转换为String类型。例如,可以将以上示例中对str进行第2次赋值的代码修改为:
str = 456.toString() // str的新值为"456"
如果需要将一个内容为数值类型字面量的字符串(简称数值字符串)转换为Int64类型,也可以使用相应的函数。
首先,在cj文件的第1行使用以下代码,导入标准库convert包中的所有public顶层声明:
from std import convert.*
然后,使用parse函数将数值字符串转换为Int64类型:
num = Int64.parse("123") // num的新值为123
同理,如果num是一个Float64类型的变量,那么可以使用以下代码将数值字符串转换为Float64类型:
num = Float64.parse("123.5") // num的新值为123.5
修改后的完整示例程序如下:
from std import convert.* main() { var str: String var num: Int64 str = "123" num = 456 str = 456.toString() // str的新值为"456" num = Int64.parse("123") // num的新值为123 }
提示
关于parse函数的更多用法,将在第15章中进行介绍。
本章需要达成的学习目标
❏ 学会声明变量。
❏ 学会通过变量名来读取变量值。
❏ 了解String、Int64、Float64和Bool类型的简单用法。
❏ 掌握赋值表达式和复合赋值表达式的用法。
❏ 掌握字符串类型和数值类型相互转换的方法。