变量:修订间差异

来自RustedWarfare Wiki
添加的内容 删除的内容
(添加基本介绍)
 
标签移动版编辑 移动版网页编辑
(未显示5个用户的18个中间版本)
第1行: 第1行:
{{InfoBox
|image=builder.png
|border= rgb(250,10,10)
|type=
|info='''该模板需要改进,请勿模仿此页面创立新页面'''}}

'''变量'''是铁锈中一种数据存储方式,于[[1.14]]被加入。
'''变量'''是铁锈中一种数据存储方式,于[[1.14]]被加入。


第4行: 第10行:


== 定义 ==
== 定义 ==
[core]中,使用<code>@global 名称:值</code>可以定义'''全局变量'''。而任何(注释节除外),都可以使用<code>@define 名称:值</code>定义'''局部变量'''。
非注释节,使用<code>@global 名称:值</code>可以定义'''全局变量''',不过请注意它复制时会由重排序导致值错误,诺要避免请按照规范将它放在core上。<br><code>@define 名称:值</code>定义'''局部变量'''。
{{折叠|变量定义例子|<pre>
{{折叠|变量定义例子|<pre>
[core]
[core]
第10行: 第16行:
@global b:qwerty
@global b:qwerty
[action_x]
[action_x]
@global c:10.0
@define c:10.0
</pre>}}
</pre>}}


第30行: 第36行:
通过<code>${变量名}</code>可以引用变量。任何代码的值中都可以进行变量引用,但是必须保证该代码值的类型在引用后不会错误。<code>%{}</code>中也可以嵌套变量引用。
通过<code>${变量名}</code>可以引用变量。任何代码的值中都可以进行变量引用,但是必须保证该代码值的类型在引用后不会错误。<code>%{}</code>中也可以嵌套变量引用。


通过${core.price},可以引用core节的price键,若节为section则指向自己,这包含复制的节,但是有些复制实现在序列化完成后,这是不可引用的。
{{折叠|变量引用例子|<pre>

[action]
<br>引用支持多个值进行替换,不过值必须满足匹配式[aA-zZ_][aA0-zZ9_.]*,且不能为运算函数。
@define time:0

<br>请注意${\s*(.*)\s*}是它的有效范围,不要在外圈填充空格。{{折叠|变量引用例子|<pre>
[core]
price:6
[action_a]
pos:1
@define str1:测
@define str1:测
@define str2:试
@define str2:试
#${core.price}==6

#${section.pos}==1
text: -${str1}${str2}
text:${str1}${str2}
#此时text的值为 -测试
#此时text的值为测试
buildSpeed:${time}
#${str1 str2}==“测 试”
</pre>}}
</pre>}}

==数学运算==
${}支持使用double进行以下数学运算,不过它存在运算优先级问题,建议运算式加上(),运算函数不一定需要()
#+-*/^()
#sqrt
#int
*rad/弧度
#sin
#cos
*例子
#${1+(2*2)}==5
#${sqrt(4)}==2
#${int 1}==1
#a=1,b=2 ${a+b}==3
请注意如果你不想进行数学运算,那么替换式不要包含“+-*/^()”其中的任何一个。
[[分类:模组制作]]
[[分类:急需改进的页面]]

2024年5月6日 (一) 20:12的版本

变量是铁锈中一种数据存储方式,于1.14被加入。

不同于内存,变量的值是固定的,在ini中定义后无法修改。

定义

在非注释节,使用@global 名称:值可以定义全局变量,不过请注意它在复制时会由重排序导致值错误,诺要避免请按照规范将它放在core节上。
@define 名称:值定义局部变量

变量定义例子
[core]
@global a:100
@global b:qwerty
[action_x]
@define c:10.0

类型

铁锈中,变量包含全局变量局部变量两种,其作用域不同。全局变量在整个ini中都能进行引用,而局部变量只能在定义该变量的节引用。同一个单位中不同的节可以定义名称相同的局部变量,而互不影响。当全局变量和局部变量重名时,局部变量优先级更高,能够在该局部变量所处的节覆盖全局变量。变量本身并不存在“数据结构类型”,本质上变量只是一个替换工具,在加载时引用的变量被替换为定义的值。

局部变量和全局变量例子
[core]
@global a:10
@global b:20
[action_a]
@define a:15
#此时 ${a} 为 15
[action_b]
#此时 ${a} 为 10
#此时 ${b} 为20

引用

通过${变量名}可以引用变量。任何代码的值中都可以进行变量引用,但是必须保证该代码值的类型在引用后不会错误。%{}中也可以嵌套变量引用。

通过${core.price},可以引用core节的price键,若节为section则指向自己,这包含复制的节,但是有些复制实现在序列化完成后,这是不可引用的。


引用支持多个值进行替换,不过值必须满足匹配式[aA-zZ_][aA0-zZ9_.]*,且不能为运算函数。


请注意${\s*(.*)\s*}是它的有效范围,不要在外圈填充空格。

变量引用例子
[core]
price:6
[action_a]
pos:1
@define str1:测
@define str2:试
#${core.price}==6
#${section.pos}==1
text:${str1}${str2}
#此时text的值为“测试”
#${str1 str2}==“测 试”

数学运算

${}支持使用double进行以下数学运算,不过它存在运算优先级问题,建议运算式加上(),运算函数不一定需要()

  1. +-*/^()
  2. sqrt
  3. int
  • rad/弧度
  1. sin
  2. cos
  • 例子
  1. ${1+(2*2)}==5
  2. ${sqrt(4)}==2
  3. ${int 1}==1
  4. a=1,b=2 ${a+b}==3

请注意如果你不想进行数学运算,那么替换式不要包含“+-*/^()”其中的任何一个。