表达式
Tact 中的每个运算符都能构成一个表达式,但 Tact 还提供了更多的表达式选项供您选择。
Literals
字面表示 Tact 中的值。 这些是固定值,而不是变量,是您在代码中实际提供的。 Tact 中的所有字面量都是表达式本身。
您还可以调用定义在某些 基元类型上的 扩展函数,这些 基元类型 与字面值相对应:
Integer literals
整数字面可以用十进制(基 )、十六进制(基 )、八进制(基 )和二进制(基 )符号书写:
-
一个 decimal integer 字面量是一串数字()。
-
前导 (或 )表示十六进制整数 字面量。 它们可以包括数字()和字母 和 。 请注意,字符的大小写不会改变其值。 因此: = = 和 = = 。
-
前导 (或 )表示 octal integer 字面量。 它们只能包括数字 。
-
前导 (或 )表示 二进制整数 字面量。 它们只能包括数字 和 。
一些整数字面的例子
Boolean literals
Bool
类型只有两个字面值:true
和false
。
String literals
字符串字面量是用双引号("
”)括起来的零个或多个字符。 所有字符串字面量都是 字符串
类型的对象。
Tact 字符串支持一系列从反斜杠字符开始的转义序列:
\\
- 字面反斜线\"
- 双引号\n
- 换行\r
- 回车\t
- tab\v
- 垂直标签\b
- 退格\f
- 表格供稿\x00
至\xFF
- 代码点,长度必须正好是两个十六进制数字\u0000
至\uFFFF
- Unicode 代码点,长度必须正好是四个十六进制数字\u{0}
到\u{FFFFFF}
- Unicode 代码点,长度可以是 到 的十六进制数
null
literal
空
值将以null
字面形式写入。它不是标识符,也不指向任何对象。它也不是原始类型的实例。相反,null
表示缺乏标识和故意不存在任何价值。
有关使用 null
的更多信息,请访问专门页面:选项。
Identifiers
标识符是代码中的一串字符,用于标识变量、常量、映射和函数,以及结构、消息、契约、特质或它们的字段和方法。 标识符区分大小写,不加引号。
在 Tact 中,标识符可以包含拉丁小写字母 (a-z
)、拉丁大写字母 (A-Z
)、下划线 (_
)和数字 (),但不能以数字开头。 标识符与 [字符串](#string-literals)的区别在于,字符串是数据,而标识符是代码的一部分。
请注意,当基元类型的标识符以大写字母开头时。 已使用定义的 复合类型,如 Structs 和 Messages 也必须大写。
Instantiation
您可以创建以下类型的实例:
Field access
您可以直接访问以下类型的字段:
Extension function call
扩展函数仅在特定类型中定义。 它们的调用方式类似于许多其他语言中的方法调用:
Static function call
在函数体的任何位置,都可以调用全局 static function 或 contract 的内部函数:
initOf
表达式 initOf
计算 contract 的初始状态 (StateInit
):
其中,StateInit
是一个内置结构,由以下部分组成:
现场 | 类型 | 说明 |
---|---|---|
代码 | [单元格 ][单元格] | 合同的初始代码(编译后的字节码 |
数据 | [单元格 ][单元格] | 合同的初始数据(合同的 init() 函数参数 |