仓颉编程快速上手
上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类型的简单用法。

掌握赋值表达式和复合赋值表达式的用法。

掌握字符串类型和数值类型相互转换的方法。