Swift高级运算符(Advanced Operators)

Swift高级运算符(Advanced Operators),第1张

概述按位运算符 ~ 1变0,0变1。 let initialBits: UInt8 = 0b00001111let invertedBits = ~initialBits // equals 11110000 $ 全1得1,其他为0 let firstSixBits: UInt8 = 0b11111100let lastSixBits: UInt8 = 0b00111111let middl 按位运算符 ~

1变0,0变1。

let initialBits: UInt8 = 0b00001111let invertedBits = ~initialBits  // equals 11110000
$

全1得1,其他为0

let firstSixBits: UInt8 = 0b11111100let lastSixBits: UInt8  = 0b00111111let mIDdleFourBits = firstSixBits & lastSixBits  // equals 00111100
|

有1得1,其他为0

let someBits: UInt8 = 0b10110010let moreBits: UInt8 = 0b01011110let combinedbits = someBits | moreBits  // equals 11111110
^

相异为1,相同为0

let firstBits: UInt8 = 0b00010100let otherBits: UInt8 = 0b00000101let outputBits = firstBits ^ otherBits  // equals 00010001
<<和>>

<<整体左移,右边填0;

>> 整体右移,左边填0。

>" title="" src="http://img.blog.csdn.net/20151103111041263">

let shiftBits: UInt8 = 4   // 00000100 in binaryshiftBits << 1             // 00001000shiftBits << 2             // 00010000shiftBits << 5             // 10000000shiftBits << 6             // 00000000shiftBits >> 2             // 00000001
算子函数

上面讲解的都是简单的运算符,下面的是为对象添加运算符,使之可计算。

符号在中间
struct Vector2D {    var x = 0.0,y = 0.0}func + (left: Vector2D,right: Vector2D) -> Vector2D {    return Vector2D(x: left.x + right.x,y: left.y + right.y)}let vector = Vector2D(x: 3.0,y: 1.0)let anotherVector = Vector2D(x: 2.0,y: 4.0)let combinedVector = vector + anotherVector// combinedVector is a Vector2D instance with values of (5.0,5.0)
前缀和后缀

前缀关键字prefix
后缀关键字postfix

prefix func - (vector: Vector2D) -> Vector2D {    return Vector2D(x: -vector.x,y: -vector.y)}let positive = Vector2D(x: 3.0,y: 4.0)let negative = -positive// negative is a Vector2D instance with values of (-3.0,-4.0)let alsoPositive = -negative// alsoPositive is a Vector2D instance with values of (3.0,4.0)
复合赋值运算符

这里用+=举例。

func += (inout left: Vector2D,right: Vector2D) {    left = left + right}var original = Vector2D(x: 1.0,y: 2.0)let vectorToAdd = Vector2D(x: 3.0,y: 4.0)original += vectorToAdd// original Now has values of (4.0,6.0)
其他 参考资料

The Swift Programming Language (Swift 2.1)

文档修改记录
时间 描述
2015-11-1 根据 The Swift Programming Language (Swift 2.1)中的Classes and Structures总结

版权所有:http://blog.csdn.net/y550918116j

总结

以上是内存溢出为你收集整理的Swift高级运算符(Advanced Operators)全部内容,希望文章能够帮你解决Swift高级运算符(Advanced Operators)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1082921.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存