• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Swift学习(一):自定义运算符operator

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

自定义运算符仅能包含这些字符:

/ = - + * % < >!& | ^。~

 

运算符位置:

前置运算符    prefix
中间运算符    infix
后置运算符    postfix

 

运算符其他配置

结合性        associativity
可取值范围    left,right和none

优先级        precedence
可取值范围    0255

系统内置运算符结合性质及优先级
    求幂相关(无结合,优先级160)
        << 按位左移(Bitwise left shift)
        >> 按位右移(Bitwise right shift)
 
    乘除法相关(左结合,优先级150)
        */% 求余
        &* 乘法,忽略溢出( Multiply, ignoring overflow)
        &/ 除法,忽略溢出(Divide, ignoring overflow)
        &% 求余, 忽略溢出( Remainder, ignoring overflow)
        & 位与( Bitwise AND)
 
    加减法相关(左结合, 优先级140)
        +-&+ Add with overflow
        &- Subtract with overflow
        | 按位或(Bitwise OR )
        ^ 按位异或(Bitwise XOR)
 
    Range (无结合,优先级 135)
        .. 半闭值域 Half-closed range
        ... 全闭值域 Closed range
 
    类型转换 (无结合,优先级 132is 类型检查( type check)
        as 类型转换( type cast)
        <= 小于等于
        >大于
        >= 大于等于
        == 等于
        != 不等
        === 恒等于
        !== 不恒等
        ~= 模式匹配( Pattern match)
 
    合取( Conjunctive) (左结合,优先级 120&& 逻辑与(Logical AND)
 
    析取(Disjunctive) (左结合,优先级 110|| 逻辑或( Logical OR)
 
    三元条件(Ternary Conditional )(右结合,优先级 100?: 三元条件 Ternary conditional
 
    赋值 (Assignment) (右结合, 优先级 90= 赋值(Assign)
        *= Multiply and assign
        /= Divide and assign
        %= Remainder and assign
        += Add and assign
        -= Subtract and assign
        <<= Left bit shift and assign
        = Right bit shift and assign
        &= Bitwise AND and assign
        ^= Bitwise XOR and assign
        |= Bitwise OR and assign
        &&= Logical AND and assign
        ||= Logical OR and assign

 

范例

// 前置:返回2的n次方
prefix operator  ^ {}

prefix func ^ (var vector: Double) -> Double {
    return pow(2, vector)
}

println(^5)  // 32.0

// 后置:返回2次方
postfix operator  ^ {}

postfix func ^ (var vector: Int) -> Int {
    return vector * vector
}

println(5^)  // 25


//中间:计算N的M次方,左结合,优先级为255
infix operator ^^ {associativity left precedence 255}

func ^^(left: Double, right: Double) -> Double {
    return pow(left, right)
}

println(2 ^^ 10 - 2 ^^ 3)  // 1024 - 8 = 1016

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
swift 基础发布时间:2022-07-13
下一篇:
swiftMT报文解析处理发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap