温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Swift如何重构自定义空等运算符

发布时间:2023-03-13 15:57:16 来源:亿速云 阅读:69 作者:iii 栏目:开发技术

今天小编给大家分享一下Swift如何重构自定义空等运算符的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

一、思路来源

最近在做 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如何重构自定义空等运算符”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI