Copyright © 2022-2024 aizws.net · 网站版本: v1.2.6·内部版本: v1.23.3·
页面加载耗时 0.00 毫秒·物理内存 64.2MB ·虚拟内存 1299.8MB
欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
最近在做 Flutter 开发时发现一个之前没注意到的空等运算符 “??=”,代表左边为空时,才会把右边的值赋给左边,然后返回左边的变量值;常用于避免多次赋值的情况;发现非常实用,于是给 swift 也自定义一个使用,最终如下;
b1 获取 a1 的值,a1 如果不为空直接返回;为空则赋值;
var a1: UIView?; let b1 = a1 ??= UITableView(); print("a1: \(a1)");//a1: Optional(<UITableView: 0x7feda0830600; print("b1: \(b1)");//b1: <UITableView: 0x7feda0830600
等同于:
var a1: UIView?; if(a1 == nil) { a1 = UITableView(); } let b1 = a1;
可以让我们少写一行代码;
precedencegroup NilEqualPrecedence { /// 优先从左向右, left, right or none associativity: left higherThan: AssignmentPrecedence//优先级,比等号运算符高 // lowerThan: AdditionPrecedence // 优先级, 比...低 assignment: true // 是否是赋值运算 } /// 空等运算符声明 infix operator ??=: NilEqualPrecedence /// 空等运算符实现 func ??= <T>(lhs: inout T?, rhs: T) -> T { if lhs == nil { lhs = rhs; } return lhs!; }
Swift 最令人兴奋的特性之一(尽管也有争议)是自定义运算符的能力。
在您自己的代码中重写或定义新运算符时,请确保遵循以下准则:
编程工作的核心是创造。创造一切我们需要而没有的函数、工具、脚本...
以上就是Swift重构自定义空等运算符 “??=” 实例的详细内容,更多关于Swift重构自定义空等运算符的资料请关注编程教程其它相关文章!
创建 Packagemkdir somePathcd somePathswift package init (--type library/executable/empty/s ...