在开发的各个方面,权衡是不可避免的。正如之前提到的,在处理 predicates 时无法记录日志,因为 predicates 要求是纯粹的。这引出了一个重要问题:我们如何调试 predicates?
Sway 是一种编程语言,它将程序分为四种类型,其中之一是脚本。与 predicates 不同,脚本允许共享逻辑。
让我们离开 MultiSig 项目,
cd ../..
创建一个名为 predicate-script-logging
的单独项目。
forc new --predicate predicate-script-logging
在你的 src/main.sw
中复制并粘贴这个新的 predicate。尝试构建这个 predicate 时会导致错误,表明日志记录是无效操作。
predicate;
use std::{
logging::log,
};
configurable {
SECRET_NUMBER: u64 = 777
}
fn main() -> bool {
log(SECRET_NUMBER);
return true;
}
但是,让我们尝试将程序类型从 predicate
切换为 script
。
script;
你的代码现在应该看起来像这样:
script;
use std::{
logging::log,
};
configurable {
SECRET_NUMBER: u64 = 777
}
fn main() -> bool {
log(SECRET_NUMBER);
return true;
}
现在,如果我们尝试构建我们的脚本,它应该可以顺利编译。
forc build
接下来,我们将生成一个 Rust 模板来看看它的实际效果!