LogoArcartX Doc
Shimmer语法教学基础篇

变量

学习Shimmer中的变量系统

一切都在变,无一处不在流动

什么是变量?

📝

变量的概念

变量就像是一个能存放数据的盒子,你可以:

  • 给它起个名字
  • 往里面存入数据
  • 随时查看或修改里面的内容

变量声明和使用

基本语法

var.age = 18
fraction = 95
global.systemVersion = '1.0'
Shimmer.println("我今年{var.age}岁了")
Shimmer.println("我的分数是{fraction}分")

变量类型系统

🌍

全局变量 global

global.serverName = "欢乐农场"
global.online = 100
  • 整个系统中都可以访问
  • 适合存储全局配置和状态
  • 在任何地方都可以读写
💾

客户端变量 client

client.lang = "简体中文"
client.volume = 80
  • 会被保存到文件中
  • 重启后依然保持原值,只有第一次没有值的时候,初始化会根据本次进程第一次赋值行为赋值
  • 仅支持基础数据类型
🖥️

服务端变量 server

// 只能读取,不能修改
Shimmer.println(server.onlinePlayer)
  • 数据由服务端同步
  • 客户端只读不可写
  • 用于展示服务端数据
📝

普通变量 var

var.playerName = "小明"
var.state = "在线"
  • 存储于载体上下文中
  • 父子载体间共享
  • 例如UI中,UI声明了var.alpha = 10
  • 这个属性,在该载体以及子载体(比如某个按钮什么的)都可访问、赋值、修改

临时变量 (无前缀)

count = 0
result = 1 + 1
  • 仅在当前作用域以及子作用域有效
  • 适合临时计算
🔒

常量 val

// 和常规语言不同,Shimmer的val变量来自Java赋予,不能在Shimmer中创建
Shimmer.println(val.系统常量)
  • 不可修改的常量
  • 数据来自Java层
  • 不能在Shimmer中创建
🎯

当前载体 self

// self指向当前载体对象
self.disable()  // 禁用当前组件
self.setTitle("新标题")
  • 指代当前上下文的载体对象
  • 不可被修改
  • 用于操作当前载体
📨

函数参数 args

var.func = -> {
    Shimmer.println(args[0])  // 第一个参数
    Shimmer.println(args[1])  // 第二个参数
}
var.func("参数1", "参数2")
  • 用于访问函数参数
  • 只能通过索引访问: args[0], args[1],后方不跟随下标将会解析失败。
  • 只在函数内部有效

变量命名规范

好的变量名能让代码更容易理解!

命名规则

  • 可以包含英文字母、数字、中文和下划线
  • 区分大小写
  • 名称要有意义,能表达其用途
// 好的命名
var.level = 10
var.totalScore = 100
var.user_name = "小明"
 
// 不好的命名
var.a = 10        // 含义不清
var.aaaaa = 100   // 无意义

作用域示例

// 全局可见
global.serverName = "芜湖起飞服"
 
// UI界面(载体)
var.title = "主菜单"
{
    // 按钮组件(子载体)中
    Shimmer.println(var.title)    // 可以访问父载体的var变量
    
    count = 1
    {
        Shimmer.println(count)    // 显示1
 
        {
            // 每个花括号即是一个新的作用域
            // 子作用域可以访问到父作用域的临时变量
            Shimmer.println(count)    // 显示1
            // 在这里也创建一个变量
            message = '你好啊'
        }
        {
            // 又是一个作用域
            Shimmer.println(message) // 什么都不会输出 因为作用域不同,对于这个作用域,这个值是空的
        }
    }
    
}

实践练习

✏️

练习1:变量类型

创建一个小程序,使用不同类型的变量来:

  • 记录用户名(client变量)
  • 记录临时分数(临时变量)
  • 统计总分(var变量)
🎯

练习2:作用域

global.total = 0
{
    var.fraction = 10
    {
        bonus = 5
        global.total = var.fraction + bonus
    }
    // 思考:这里能访问bonus吗?
}

理解变量的作用域和生命周期是写好程序的关键。合理使用不同类型的变量,可以让程序更加清晰和高效。

On this page