美文网首页Swift swift
Swift-postfix 运算符

Swift-postfix 运算符

作者: Mccc_ | 来源:发表于2019-07-31 15:54 被阅读9次

内容:

1. 运算符作用位置的说明

// =运算符是中置运算符
var a = 0 
// +=同样是中置
a += 1
// ++运算符是右置
a = a++
// --运算符是左置
a = --a

如何做到在左侧,中间还是右侧执行呢?

  • 前置运算符:prefix
// 实现oc里面的 -- 运算
prefix func --(x: inout Int) {
    x -= 1
}
var a = 3
 --a
  • 后置运算符:postfix
// 实现字符串的对可选值值的强解包崩溃处理
postfix func ~(str: String?) -> String {
    return str == nil ? "" : str!
}

 let optionalStr: String? = nil
 let str1 = optionalStr~     // 为 “”
 let str = optionalStr!      // 崩溃

// 实现oc里面的++运算符
postfix func ++(x: inout Int) {
    x += 1
}
 var a = 0
 a++
  • 中间运算符:infix
//中间:计算N的M次方,左结合,优先级为255
infix operator ^^
func ^^(left: Double, right: Double) -> Double {
    return pow(left, right)
}
print(2 ^^ 3) // 8.0

用以上三个不同的关键词修饰,可以在不同的位置起效果

2. 运算符的重载

对系统的运算符进行重新赋职能。
“=”是不可以进行重载的

struct Vector3 {
    
    var x: Double = 0.0
    var y: Double = 0.0
    var z: Double = 0.0
    
    func length() -> Double {
        return sqrt(x * x + y * y + z * z)
    }
}

// 重载乘号(*)
func *(left: Vector3, right: Vector3) -> Double {
    return left.x * right.x + left.y * right.y + left.z * right.z
}

var vector3 = Vector3(x: 1, y: 2, z: 3)
var vector4 = Vector3(x: 2, y: 5, z: -3)
vector3 * vector4

3. 自定义运算符

除了标准运算符,Swift还可以声明和实现自定义运算符。
自定义运算符需要在全局作用域通过关键字operator进行定义,同时要指定prefix(前缀)、infix(中缀)或postfix(后缀)修饰符

prefix operator  +++

自定义运算符仅能包含这些字符:/ = - + * % < >!& | ^。~

相关文章

  • Swift-postfix 运算符

    内容: 1. 运算符作用位置的说明 如何做到在左侧,中间还是右侧执行呢? 前置运算符:prefix 后置运算符:p...

  • python常用运算符的使用

    python七类运算符 算术运算符比较运算符逻辑运算符赋值运算符成员运算符身份运算符位运算符 赋值运算符 运算符描...

  • 运算符与字符串

    运算符 算数运算符、比较运算符、赋值运算符、逻辑运算符比较运算符:>、<、>=、<=、==、!=赋值运算符:=、+...

  • 4. Python运算符

    算数运算符 加法运算符: + 减法运算符: - 乘法运算符: * 除法运算符: / 幂运算符: ** 整除运算符:...

  • Golang——运算符和格式化输出

    运算符 算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、其他运算符 算术运算符 + 相加- 相减* ...

  • Go语言基础之运算符

    运算符 Go 语言内置的运算符有: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 算术运算符 运算符描...

  • 2018年6月13日【Python学习笔记】

    一、运算符 运算符:算数运算符、比较运算符、赋值运算符、逻辑运算符 1.比较运算符:>、<、>=、<=、==、!=...

  • 第二节: 运算符

    算术运算符: 赋值运算符: 比较运算符: Python位运算符 逻辑运算符: 成员运算符: 身份运算符:

  • Java基础学习二 运算符

    运算符 1,运算符-算术运算符(++、--) 代码示例: 2,运算符-关系运算符 运算符号解析运算符号解析>大于<...

  • Python运算符、格式化输出、条件语句、循环语句、列表、元组

    运算符包括:算术运算符、比较运算符、赋值运算符、逻辑运算符、成员运算符、身份运算符 算术运算符 % 取模(余数...

网友评论

    本文标题:Swift-postfix 运算符

    本文链接:https://www.haomeiwen.com/subject/zckzrctx.html