恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

Sway Boolean 类型(bool)完全指南:true/false 语义、取反运算符与标准库实践

  • 首页
  • 资讯中心
  • /
  • Sway Boolean 类型(bool)完全指南:true/false 语义、取反运算符与标准库实践

相关资讯

出海游戏AI买量策略与专属语言引擎实战 2026/9/12 15:35:05
AR-HUD与NOA组合:智驾意图清晰可见的底层逻辑 2026/9/12 15:35:05
data-engineering-zoomcamp 实战:在 Kestra 中配置 Google Cloud Platform(GCS 数据湖与 BigQuery 数据仓库) 2026/9/12 15:30:05

最新资讯

AWS EB动态配置EC2环境变量实战指南
轻奢美甲品牌特许经营模式解析与数字化运营
GPT-5.1 Thinking框架:AI辅助论文写作的技术突破
大模型长文本处理:上下文并行与Ring Attention技术解析
Python质控小程序在传染病报告信息审核中的应用
回溯算法解析:全排列问题与LeetCode实战

今日推荐

MATLAB仿生优化框架:长鼻浣熊算法多策略融合实现
【JAVA毕设源码分享】基于 JavaWeb 的校园一卡通管理系统的设计与实现 基于 JavaWeb 的校园卡业务管理系统(程序+文档+代码讲解+一条龙定制)
【JAVA毕设源码分享】基于 Java 的图书馆借阅管理平台的搭建与实现 基于 Java 的图书馆综合管理系统(程序+文档+代码讲解+一条龙定制)

本周热门

超人会飞不算本事:系统稳定依赖清晰规则与边界设计
超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论
基于CNN的调制信号识别:MATLAB实现时频图分类实战

本月精选

自研推理加速器Redwood:两周内实现PyTorch模型高效部署的实战教程
V4L2摄像头采集实战:从camera_client.rar到出图全流程解析
从“谁发明了钢琴键”到知识问答智能体:RAG与记忆工程实践

Sway Boolean 类型(bool)完全指南:true/false 语义、取反运算符与标准库实践

发布时间:2026/9/12 15:35:05
Sway Boolean 类型(bool)完全指南:true/false 语义、取反运算符与标准库实践 Sway Boolean 类型bool完全指南true/false 语义、取反运算符与标准库实践【免费下载链接】sway Empowering everyone to build reliable and efficient smart contracts.项目地址: https://gitcode.com/GitHub_Trending/sw/swaySway 是一门为 FuelVM 设计的静态类型智能合约语言其内建built-in原始类型bool用于表示真/假二元状态是条件逻辑、权限校验与结果验证的基石。本文基于 Sway 语言参考文档docs/reference/src/documentation/language/built-ins/boolean.md结合仓库内标准库源码与官方代码示例系统讲解 Sway 中布尔值的定义、运算、取反语义及其底层实现帮助你写出严谨、可验证的合约条件逻辑。什么是 Boolean 类型在 Sway 中Boolean布尔是一种只有两种可能取值的类型true真或false假。从底层表示看布尔值由数值1或0表达语言为其提供了true与false两个具名值使代码可读性更高。Sway 是一门静态类型语言所有值的类型在编译期必须已知详见 Built-in Types 概览。bool是 Sway 提供的原始primitive类型之一与u8/u16/u32/u64/u256、str/str[n]、b256等类型并列其他复合类型数组、元组、结构体、枚举均由这些原始类型构造而来。从语法解析层面看true与false属于字面量literal的一种sway-ast中的Literal::Bool携带LitBool节点sway-ast/src/literal.rs其中LitBoolType明确区分True与False两种枚举变体并可无缝转换为 Rust 的boolLitBoolType::True trueLitBoolType::False false这印证了 Sway 布尔字面量与底层二值语义的一一对应关系。声明布尔变量声明布尔变量与声明其他类型的变量并无二致通过let关键字绑定编译器通常能自动推断类型let is_true true; // 推断为 bool let is_false false; // 推断为 bool也可以显式标注类型let is_enabled: bool true;官方文档中给出的完整示例位于 docs/reference/src/code/language/built-ins/booleans/src/lib.sw该示例以library;声明为一个库项目其清单文件 Forc.toml 中entry lib.sw并依赖标准库stdlibrary; fn returns_true() - bool { let is_true true; let is_false false; // implicitly returns the Boolean value of true is_true !is_false }该函数依次声明了一个true与一个false布尔变量对is_false施加取反运算符!得到true再与is_true做相等比较最终隐式返回比较结果Sway 中函数最后一个表达式的值即返回值无需显式return参见 函数返回值。由于true true成立该函数总是返回true。布尔表达式与条件逻辑布尔值最常见的用途是条件判断与验证。Sway 中if、else if、else表达式的分支条件必须求值为bool参见 if 表达式let number 5u64; if number % 3 0 { // 条件为 true 时执行 } else if number % 4 0 { // 上一条件为 false、本条件为 true 时执行 } else { // 以上所有条件均为 false 时的兜底分支 }条件按定义顺序依次求值一旦某个条件为true即进入对应分支并跳过其余条件所有条件均为false时进入else兜底分支。此外if在 Sway 中是表达式可以与let组合if let形式例如对枚举变体进行模式匹配——无论哪种用法其判断结果都是true/false布尔值。除if之外比较运算符、!、、等的求值结果同样是bool。在标准库中相等比较由PartialEqtrait 提供impl PartialEq for bool通过__eq(self, other)内建指令实现并配套impl Eq for bool {}sway-lib-std/src/ops.sw而!则由默认方法neq定义为(self.eq(other)).not()即对相等结果取反sway-lib-std/src/ops.sw。一元取反运算符!Sway 提供一元unary取反运算符!用于翻转布尔值true→falsefalse→true这一运算符由标准库中的Nottrait 支撑。Not定义方法fn not(self) - Self其文档示例甚至用自定义结构体展示!可被重载到用户类型上sway-lib-std/src/ops.sw。对bool的内建实现如下sway-lib-std/src/ops.swimpl Not for bool { fn not(self) - Self { __eq(self, false) } }值得注意的是bool的取反并非单纯的位翻转而是通过内建指令__eq与false比较得出若self为truetrue false得false若self为falsefalse false得true从而精确完成语义取反。这也解释了为什么示例中!is_false求值为true。Nottrait 同时为u8/u16/u32/u64/u256/b256等类型实现了按位取反__not但布尔取反与整数按位取反语义不同使用时注意区分。标准库中的布尔实践标准库sway-lib-std/src大量以bool作为返回值或参数是学习布尔用法的绝佳参考断言assert(condition: bool)接收一个布尔条件条件为false时回滚交易sway-lib-std/src/assert.sw是合约验证的核心工具assert(returns_true());调用方身份校验auth模块的caller_is_external() - bool返回当前调用是否为外部调用sway-lib-std/src/auth.sw常配合require/assert实现访问控制。零值判断Address::is_zero(self) - bool、AssetId::is_zero(self) - bool等谓词方法用于校验地址/资产 ID 是否为零值见 sway-lib-std/src/address.sw 与 sway-lib-std/src/asset_id.sw。容器状态查询Bytes::is_empty(self) - bool判断字节数组是否为空sway-lib-std/src/bytes.sw。这类返回bool的谓词函数 assert/require消费布尔值的模式是 Sway 智能合约中可读且高效的验证范式。常见误区与要点!只作用于布尔值!对bool是逻辑取反若用于数值类型则触发Not的按位取反实现两者语义不同勿混用。比较运算结果必为bool、!、、的返回值类型是bool可直接作为if条件或传入assert。隐式返回函数体最后一个表达式即为返回值returns_true示例正是利用这一点省略了return关键字。编译期类型确定Sway 静态类型系统要求布尔值在编译期确定类型let x true;会由编译器推断为bool无需也可显式标注。总结Sway 的bool类型以true/false两个具名值承载二元状态底层对应数值1/0由sway-ast的LitBool字面量解析支撑。它在if表达式、比较运算、断言与权限校验中无处不在一元运算符!通过标准库Nottrait内部实现为__eq(self, false)完成逻辑取反。掌握布尔语义是编写安全、可验证的 Sway 智能合约的第一步。进一步阅读if 表达式、变量、内置类型总览。【免费下载链接】sway Empowering everyone to build reliable and efficient smart contracts.项目地址: https://gitcode.com/GitHub_Trending/sw/sway创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号