Appearance
Sway 中的注释以两个斜杠开始,一直持续到行尾。对于超出一行的注释,您需要//在每一行中包含注释。
// hello world
// let's make a couple of lines // commented.
你还可以在包含代码的行的末尾放置注释。
fn main() { let baz = 8; // Eight is a lucky number }
你还可以进行块注释。
fn main() { /* You can write on multiple lines like this if you want */ let baz = 8; }
logging 库提供了一个通用 log 函数,可以使用该函数导入 use std::logging::log 并用于记录任何类型的变量。每次调用 log 都会在 receipts list 中添加一个 receipts。 log 可以生成两种类型的收据:Log 和 LogData。
logging
log
use std::logging::log
receipts list
receipts
Log
LogData
fn log_values(){ // Generates a Log receipt log(42); // Generates a LogData receipt let string = "sway"; log(string); }
收据Log 是为非引用类型生成的,即bool、u8、u16、u32和u64。
bool
u8
u16
u32
u64
例如,使用log(x)记录保存值42的整数变量x可能会生成以下收据:
log(x)
42
x
"Log": { "id": "0000000000000000000000000000000000000000000000000000000000000000", "is": 10352, "pc": 10404, "ra": 42, "rb": 1018205, "rc": 0, "rd": 0 }
请注意ra将包含被记录的值。当使用log时,额外的寄存器rc和rd将为零,而rb可能包含一个非零值,表示log实例的唯一ID。唯一ID本身没有意义,但允许Rust和TS sdk通过在JSON ABI文件中查找日志ID来知道记录的数据的类型。
ra
rc
rd
rb
LogData 为引用类型生成,其中包括除非引用类型之外的所有类型;对于 大于 64 位整数的非引用类型,例如 u256;
u256
例如,使用 log(b) 记录一个名为 b 的 b256 变量,其值为 0x1111111111111111111111111111111111111111111111111111111111111111,可能会生成以下收据:
log(b)
b
b256
0x1111111111111111111111111111111111111111111111111111111111111111
"LogData": { "data": "1111111111111111111111111111111111111111111111111111111111111111", "digest": "02d449a31fbb267c8f352e9968a79e3e5fc95c1bbeaa502fd6454ebde5a4bedc", "id": "0000000000000000000000000000000000000000000000000000000000000000", "is": 10352, "len": 32, "pc": 10444, "ptr": 10468, "ra": 0, "rb": 1018194 }
请注意 data上面的 中将包含以十六进制记录的值。与log收据类似,附加寄存器被写入:ra使用 时将始终为零 log,同时 rb 将包含实例的唯一 ID log。
data
Note 注意 Rust SDK 公开了APIs,允许您检索记录的值并根据 JSON ABI 文件中指示的类型很好地显示它们。
注释和日志
注释
Sway 中的注释以两个斜杠开始,一直持续到行尾。对于超出一行的注释,您需要//在每一行中包含注释。
你还可以在包含代码的行的末尾放置注释。
你还可以进行块注释。
Logging
logging
库提供了一个通用log
函数,可以使用该函数导入use std::logging::log
并用于记录任何类型的变量。每次调用log
都会在receipts list
中添加一个receipts
。log
可以生成两种类型的收据:Log
和LogData
。Log Receipt
收据
Log
是为非引用类型生成的,即bool
、u8
、u16
、u32
和u64
。例如,使用
log(x)
记录保存值42
的整数变量x
可能会生成以下收据:请注意
ra
将包含被记录的值。当使用log
时,额外的寄存器rc
和rd
将为零,而rb
可能包含一个非零值,表示log
实例的唯一ID。唯一ID本身没有意义,但允许Rust和TS sdk通过在JSON ABI文件中查找日志ID来知道记录的数据的类型。LogData Receipt
LogData
为引用类型生成,其中包括除非引用类型之外的所有类型;对于 大于 64 位整数的非引用类型,例如u256
;例如,使用
log(b)
记录一个名为b
的b256
变量,其值为0x1111111111111111111111111111111111111111111111111111111111111111
,可能会生成以下收据:请注意
data
上面的 中将包含以十六进制记录的值。与log
收据类似,附加寄存器被写入:ra
使用 时将始终为零log
,同时rb
将包含实例的唯一 IDlog
。