> LeekScript v2
**注意:本页面面向 LeekScript 2 的用户。想了解当前版本 LeekScript 中的变量,请前往 变量**
待办:
----- 什么是变量?
变量是所有编程语言中的一个基础概念。它们可以把值((表达式的结果))保存在内存中,以便在计算((其他表达式))中重复使用。
LeekScript 提供的变量可以存放多种类型的值: ((如有需要,放上指向具体页面的链接,而不是写“稍后再讲”))
不过,变量的类型并不固定(不像 C 或 Java),而是会根据你想存放的数据自动适应(就像 JavaScript 或 PHP 那样)。
((其实并没有什么“适应”,只是每次使用时都会检查类型。))
使用变量之前,必须先声明它。((注意措辞,这样写会让人以为变量只能在声明之后赋值,对 let 和 const 来说有问题。把这个例子和下一个例子对调。)) 声明时使用关键字“var”,写法如下:
// 声明变量 nomDeVariable var nomDeVariable;
也可以像下面这样给变量赋一个值:
// 声明变量 nomDeVariable 并给它赋值 12 let nomDeVariable = 12;
另外,也可以一次声明多个变量,用逗号隔开:
// 声明 premiereVariable 和 deuxiemeVariable var premiereVariable, deuxiemeVariable; let firstVar = 1, secondVar = 2
注意: 升级到 LSv2 之后,; 变成了可选的。如果想让不易阅读的代码更清晰,它仍然有用。
((缩进让代码更易读,分号则为编译器/解释器消除歧义。))
变量共有 4 种,按照能否被修改以及在战斗中存活多久来区分。 具体如下:
变量类型 可修改 常量 回合结束时失效 var let 战斗结束时失效 global const
这几种变量的声明方式相同,但常量一旦声明,就几乎((是完全不能,除非集合/匿名对象出现什么奇怪的行为。))不能再修改了(这很合理)。
((把 var 一节中可以用 let 写的示例移到这一节来。))
((给出确实需要重新赋值的示例,比如在循环中。))
在代码中可以用多种方式使用变量。
可以用赋值运算符 = 给变量赋一个值(也就是让它把这个值“记”在内存里):
((这里展示的是重新赋值,是 var 和 global 特有的。))
// 声明 maVariable var maVariable // 把 1 赋给 maVariable maVariable = 1
可以通过编写表达式来进行计算,可用的运算符如下:
写法如下:
((总是重复使用同一个变量有点脏,不应该给新手写脏代码。悄悄说一句:let))
// 声明变量 a var a // 做几次计算 a = 2 + 8 // a 的值变为 10 a = 5 - 4 // a 的值变为 1 a = 3 * 5 // a 的值变为 15 a = 6 / 2 // a 的值变为 3 a = 8 % 3 // a 的值变为 2
// 也可以组合使用多个运算符 a = 1 + 2 * 3 // a 的值变为 7 a = 4 / 2 + 1 // a 的值变为 3
// 甚至可以使用括号 a = (2 + 3) * 2 // a 的值变为 10
也可以在表达式中使用变量,计算时会用到它的值。例如:
((再说一次,如果没有合理的修改需求,就别提前声明。))
// 声明变量 a 和 b var a, b
// 把值 10 赋给 a a = 10 // a 的值变为 10
// 把 a + 5 的值赋给 b b = a + 5 // b 的值变为 15
也可以像下面这样使用字符串:
((又来了。))
var maVariable maVariable = "我是一个字符串"
对字符串只能使用 + 运算符,它可以拼接字符串片段,也就是把它们首尾相连。所以下面的代码:
((我知道老看到同一条备注很烦,但新手就是照着看到的东西写代码的。))
// 声明 chaine1 和 chaine2 var chaine1, chaine2
chaine1 = "大家" // chaine1 的值变为 "大家" chaine2 = chaine1 + "好" // chaine2 的值为 "大家好"
值得一提的是,字符串可以和数字拼接,这在把计算结果放进字符串时很有用:
((再说一次。))
// 声明 a 和 chaine var a, chaine
a = 51 * 17 // a 的值变为 867 chaine = "51 乘以 17 的结果是:" + a // 此时 chaine 的内容为 "51 乘以 17 的结果是:867"
((先介绍这个,再讲全局变量))
((尚未实现))
((相当于具有全局作用域的 let))
((如果没有以全局方式声明的函数,也就是用 fonction name(parameters) { body } 语法声明的函数,它就没有用处))
((尚未实现))
((相当于具有全局作用域的 var))
((如果没有以全局方式声明的函数,也就是用 fonction name(parameters) { body } 语法声明的函数,它就没有用处))
Impossible de charger les données du jeu.
Vérifiez votre connexion et réessayez.