🤩
SBPlaceholder2 Wiki
  • SBPlaceholder 2
  • 基础信息
    • 🤔这是什么
    • 😇从何而来
    • 😘插件安装
  • 初窥门径
    • 🐥第一个表达式
    • 👨‍🍳元素与运算
    • 👨‍⚕️外部占位符
  • 融会贯通
    • 🔥简单元素类型
    • 🌪️函数调用
    • ☃️方法调用
  • 炉火纯青
    • 👨‍🏫复杂元素类型
    • 🧙‍♂️发生了什么
  • 一些例子
    • 👶宝宝难度
    • 👩‍🦳困难难度
    • 🦊大师难度
  • 百科全书
    • 🚢内置类型
      • 整数 Int
      • 数值 Number
      • 文本 String
      • 布尔值 Bool
      • 子表达式 Expression
      • 玩家 Player
      • 函数 Function
      • 虚空 Void
      • *列表 List
      • *字典 Dict
      • *类型 Type
    • 🚓内置函数
    • 🗿更新日志
  • 作为开发者
    • 🎷自定义函数
    • 🎸自定义类型
    • 🎤拓展方法
由 GitBook 提供支持
在本页
  • 表达式
  • 委托
  • 调用函数时
  1. 炉火纯青

发生了什么

表达式

表达式是一个储存了一系列委托与一系列运算符的容器,当表达式解析时,所有委托被执行并转换为元素,然后重复使用优先级最高的运算符计算其相关的两个元素,重复这一过程直到所有运算符都被处理过,表达式解析结束,表达式的结果是剩下的唯一元素。

委托

每次解析表达式时,执行的相同函数也可能会产生不同结果(比如说random()),因此表达式解析前函数只会作为一个执行函数的委托存于表达式中,在表达式解析开始时才会转换为元素,委托有以下类型:

  • CALL_SELF 调用自身,格式:元素()

  • CALL_METHOD 调用函数,格式:元素.method()

  • GET_FIELD 获取属性,格式:元素.field

  • PARSE_VARIABLE 检查文本是不是变量

  • SUB_EXPRESSION 处理执行的子表达式

(-5).abs()+random()
运算符 [+]
委托:
- Int@-5 -> CALL_METHOD abs()
- String@random -> PARSE_VARIABLE -> CALL_SELF

调用函数时

在了解委托后你可能可以很容易的理解,函数 random() 其实只是文本 random 执行了 PARSE_VARIABLE 委托,真正的函数存在全局变量中。

上一页复杂元素类型下一页宝宝难度

最后更新于1年前

🧙‍♂️