在这里插入图片描述

什么是变量?🤔

想象一下,变量就像是一个带标签的盒子

  • 盒子有个名字(变量名)
  • 盒子里可以放东西(数据)
  • 你可以随时查看或更换盒子里的东西

一、变量声明的两种方式 ✨

1. 使用 let 声明(不可变变量)

let age = 25
let name = "小明"
let isStudent = true

特点:

  • let 声明的变量,赋值后不能修改
  • 就像把东西放进密封的盒子,只能看不能改
  • 适合存储不需要改变的数据 ✅

2. 使用 var 声明(可变变量)

var score = 85
score = 90  // 可以修改!
var count = 0
count = count + 1  // 可以累加

特点:

  • var 声明的变量,可以随时修改
  • 就像普通盒子,可以反复更换里面的东西
  • 适合需要改变的数据 🔄

二、变量类型 📝

仓颉是静态类型语言,但支持类型推断,让我们看看常见类型:

基本数据类型

// 整数类型
let wholeNumber: Int64 = 100
var count = 42  // 自动推断为 Int64

// 浮点数类型
let pi: Float64 = 3.14159
var price = 99.99  // 自动推断为 Float64

// 布尔类型
let isReady: Bool = true
var hasFinished = false

// 字符串类型
let greeting: String = "你好,仓颉!"
var message = "欢迎学习"

类型推断 vs 显式类型 🎯

// 类型推断(推荐新手使用)
let age = 20              // 编译器自动知道是 Int64
let name = "张三"          // 自动知道是 String

// 显式指定类型
let age: Int64 = 20
let name: String = "张三"

💡 小提示:刚开始学习时,让编译器自动推断类型更简单!

三、赋值操作 🎨

初始赋值

let x = 10           // 声明并赋值
var y: Int64         // 只声明,不赋值(需要指定类型)
y = 20               // 后续赋值

重新赋值(仅限 var)

var temperature = 25
temperature = 30     // ✅ 可以修改

let birthYear = 2000
birthYear = 2001     // ❌ 错误!let 声明的变量不能修改

复合赋值

var num = 10
num = num + 5    // 基本方式
num += 5         // 简写方式(推荐)
num -= 3         // 减法
num *= 2         // 乘法
num /= 4         // 除法

四、命名规则 📌

有效的变量名 ✅

let age = 18
let userName = "李华"      // 驼峰命名
let user_name = "王芳"     // 下划线命名
let score2024 = 95        // 可以包含数字
let 学生姓名 = "赵六"      // 支持中文(但不推荐)

无效的变量名 ❌

let 2name = "错误"        // 不能以数字开头
let user-name = "错误"    // 不能包含连字符
let let = 10             // 不能使用关键字

命名建议 💡

  1. 见名知义studentAgesa
  2. 使用驼峰命名firstName, totalScore
  3. 避免单字母:除非是循环变量(i, j, k)
  4. 保持一致性:整个项目使用同一种风格

五、实战练习 🎮

练习1:计算圆的面积

let radius = 5.0
let pi = 3.14159
var area = pi * radius * radius
println("圆的面积是: ${area}")

练习2:温度转换

var celsius = 25.0
var fahrenheit = celsius * 9.0 / 5.0 + 32.0
println("${celsius}°C = ${fahrenheit}°F")

练习3:购物计算

let price = 199.0
let quantity = 3
var total = price * Float64(quantity)
let discount = 0.9
total *= discount
println("总价: ${total}元")

六、常见错误及解决 ⚠️

错误1:修改 let 变量

let score = 80
score = 90  // ❌ 错误!

// 解决:使用 var
var score = 80
score = 90  // ✅ 正确

错误2:类型不匹配

var age: Int64 = 25
age = "二十五"  // ❌ 错误!类型不匹配

// 解决:保持类型一致
var age: Int64 = 25
age = 30  // ✅ 正确

错误3:未初始化就使用

var count: Int64
println(count)  // ❌ 错误!未初始化

// 解决:先赋值
var count: Int64 = 0
println(count)  // ✅ 正确

七、最佳实践建议 🌟

  1. 优先使用 let:除非确定需要修改,否则用 let
  2. 有意义的命名:让代码像说话一样清晰
  3. 及时初始化:声明时就赋值,避免未初始化错误
  4. 注意作用域:变量在声明的代码块内有效

总结 🎯

  • let = 不可变,安全,首选 🔒
  • var = 可变,灵活,按需使用 🔓
  • 类型可推断,也可显式指定
  • 命名要规范,代码更易读
Logo

新一代开源开发者平台 GitCode,通过集成代码托管服务、代码仓库以及可信赖的开源组件库,让开发者可以在云端进行代码托管和开发。旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐