DahuangPhoneiOSSwift → Swift中的自定义操作符


  共有9538人关注过本帖树形打印复制链接

主题:Swift中的自定义操作符

帅哥哟,离线,有人找我吗?
dahuangphone
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:407 积分:4533 威望:0 精华:0 注册:2012/9/29 7:54:10
Swift中的自定义操作符  发帖心情 Post By:2014/10/13 18:17:55 [只看该作者]

struct Pos{

    var x:Float=0.0

    var y:Float=0.0

}


//二元操作符,两个参数分别位于操作符两边

//中置运算使用 @infix 前缀标注

@infix func + (left:Pos,right:Pos)->Pos{

    return Pos(x: left.x+right.x, y: left.y+right.y)

}



//前置操作符 ++

//中置运算使用 @prefix 前缀标注

@prefix func ++ ( inout pos:Pos)->Pos{

    ++pos.x

    ++pos.y

    return pos

}


//前置操作符 -

//中置运算使用 @prefix 前缀标注


@prefix func - ( inout pos:Pos)->Pos{

    pos.x = -pos.x

    pos.y = -pos.y

    return pos

}


//后置操作符

//中置运算使用 @postfix 前缀标注

@postfix func ++ (inout pos:Pos)->Pos{

    var temp=Pos(x: pos.x, y: pos.y)

    pos.x++

    pos.y++

    return temp

}


//组合赋值运算符 +=

//使用@assignment标注


@assignment func += (inout left:Pos,right:Pos){

    left=left+right

}


//定制自己的运算符

//需要使用 operator 操作符类型  {} 来声明

operator infix ^-^{}

@infix func ^-^(left:Pos,right:Pos)->Pos{

    return Pos(x: left.x*right.x, y: left.y*right.y)

}




var pos=Pos(x: 1,y: 1)

pos++    //(1,1)

++pos    //(3,3)

-pos    //(-3,-3)

pos^-^pos    //(9,9)



 回到顶部