MOVE表达式、范围和运算符
我们已经介绍了 Move on Sui 的许多概念。 Move on Sui也提供了多种表达方式。让我们深入了解它们以及范围在 Move on Sui 中的工作原理。
Sui表达式
返回某些内容或以分号结尾的语句的代码单元是表达式。该内容可以是整数、字符串、布尔值或任何有效的数据类型。我们可以有把握地说函数是表达式,因为它们返回一个值。
Move on Sui有3种表达方式:
- 空
- 文字
- 块
让我们通过示例来探讨这些表达式:
空表达式
我们可能永远不会直接使用这个表达式,但知道我们可以选择空表达式总是好的。
只需在函数体中添加一个空括号即可表示空表达式。 VM 会自动忽略这些内容,因此定义这些内容无需额外成本。
#![allow(unused)] fn main() { fun function_name() { () } }
文字表达式
我们学会了定义变量和常量,对吗?
对您来说,好消息是定义它们并以分号结束它们使其成为一个表达式。
以下是我们在变量和常量课程中使用的示例。所有这些都是文字表达。唷!是不是很简单😃
#![allow(unused)] fn main() { let a; let b : u8; let c = true; let d : u8 = 10; }
- 最简单的表达式可以是
10 + 5;
甚至2;
。我们实际上使用它们来定义变量或常量。
块表达式
由 {}
标记的块是一个表达式。块中可以包含表达式或其他块。它可能会也可能不会返回值。如果是块的返回值,则不必以分号结尾。
#![allow(unused)] fn main() { module examples::example { fun function_name() { // this is a block { }; // this too { 3; // a block {true;} // another expression in a block } } } }
MOVE语言的范围
既然我们讨论了块表达式,我们还需要了解其中的 Scope 的含义。正如定义范围一样,范围是指某个变量居住或存在的区域。这意味着每当我们使用 {}
定义块时,我们就定义了一个范围。因此,我们将在该范围内定义的所有变量都可以访问,但在该范围之外,我们无法调用它们。
我知道这可能会让您感到困惑,所以让我用一个例子来解释它,让您更容易理解:
#![allow(unused)] fn main() { module examples::example { fun function_name() { // This is the scope of a function - Block A let a = 0; { let b = 0; }; // this is a scope within a function- Block B { // Block C let c = 0; {let flag = true;} // this is a nested scope - Block D } } } }
考虑到上面的例子,我们可以注意到以下几点:
- 块 A 中定义的任何内容都可以被块 B、C 和 D 访问。这意味着我们可以在
function_name
函数中的任何位置访问a
。 - 块 B 中定义的任何内容都无法被块 A、C 和 D 访问。这意味着我们无法在其他任何地方访问
b
。 - 块 C 中定义的任何内容对于块 A 和 B 来说都无法访问,但对于块 D 来说是可以访问的,因为它嵌套在块 C 中。这意味着除了块 C 和 D 之外,我们无法访问
c
任何其他地方。 - 块 D 中定义的任何内容都无法被块 A、B 和 C 访问。这意味着我们无法访问除块 D 之外的任何其他地方的
flag
,甚至不能访问块 C。
让我将所有这些解释总结为一行。变量只能存在于其定义的范围或块内。
因为我们已经完成了表达式和范围。现在让我们快速看看 Move on Sui 中有哪些整数运算符。
MOVE语言操作
Move on Sui 有各种运算符,包括以下 uint 运算符: u8
、 u64
、 u128
。
Move 有多种运算符来修改整数值。这是一个列表:
操作员 | 操作员名称 |
---|---|
+ | 和 |
- | 子 |
/ | 分区 |
* | 穆尔 |
% | 模组 |
<< | 左移 |
>> | 右移 |
& | 和 |
^ | 异或 |
_ 是独一无二的
move 不允许你声明一个你不使用的变量,它会抛出一个错误。如此高效,不是吗?
但如果我们出于某种原因必须定义一个值,我们确实有一个作弊门😏。
考虑以下代码:
module examples::example {
fun add() {
let sum = 1;
}
}
这将引发错误,因为我们没有在其他任何地方使用 sum
。但是,如果将 sum
替换为 _
,如下所示,我们将不会收到错误。酷!!
module examples::example {
fun add() {
let _ = 1;
}
}
小结
在本课中,我们介绍了 Move 中的表达式,包括空表达式、文字表达式和块表达式。我们还了解了范围以及它们如何定义变量可访问性。了解表达式和范围对于在 Move on Sui 中编写有效的代码至关重要。最后,我们了解了 Move on Sui 中可用的整数运算符,并探索了 Move on Sui 的独特之处。通过理解这些运算符,我们就可以开始编写基本代码了。
在继续您的编程之旅时,不断练习和探索 Move on Sui!