Swift 学习之二十:类型强转(+、-、*、/)

简介:

OperatorForceTransfer.swift:

//
//  OperatorForceTransfer.swift
//  FormatForceTransfer
//
//  Created by sixiaobo on 14-6-11.
//  Copyright (c) 2014年 com.huangyibiao. All rights reserved.
//

import Foundation

//
// @brief In order to make different types can be operated, 
//        define the below functions.
// @author huangyibiao

///////////////////////////////// + //////////////////////////////
// make Int + Double = Double derectly
@infix func +(lhsParam: Int, rhsParam: Double) -> Double {
    return Double(lhsParam) + rhsParam
}

// make Double + Int = Double derectly
@infix func +(lhsParam: Double, rhsParam: Int) -> Double {
    return lhsParam + Double(rhsParam)
}

// make Int + Float = Float derectly
@infix func +(lhsParam: Int, rhsParam: Float) -> Float {
    return Float(lhsParam) + rhsParam
}

// make Float + Int = Float derectly
@infix func +(lhsParam: Float, rhsParam: Int) -> Float {
    return lhsParam + Float(rhsParam)
}

// make Double + Float = Double derectly
@infix func +(lhsParam: Double, rhsParam: Float) -> Double {
    return lhsParam + Double(rhsParam)
}

// make Float + Double = Double derectly
@infix func +(lhsParam: Float, rhsParam: Double) -> Double {
    return Double(lhsParam) + rhsParam
}


///////////////////////////////// - //////////////////////////////
// make Int - Double = Double derectly
@infix func -(lhsParam: Int, rhsParam: Double) -> Double {
    return Double(lhsParam) - rhsParam
}

// make Double - Int = Double derectly
@infix func -(lhsParam: Double, rhsParam: Int) -> Double {
    return lhsParam - Double(rhsParam)
}

// make Int - Float = Float derectly
@infix func -(lhsParam: Int, rhsParam: Float) -> Float {
    return Float(lhsParam) - rhsParam
}

// make Float - Int = Float derectly
@infix func -(lhsParam: Float, rhsParam: Int) -> Float {
    return lhsParam - Float(rhsParam)
}

// make Double - Float = Double derectly
@infix func -(lhsParam: Double, rhsParam: Float) -> Double {
    return lhsParam - Double(rhsParam)
}

// make Float - Double = Double derectly
@infix func -(lhsParam: Float, rhsParam: Double) -> Double {
    return Float(lhsParam) - rhsParam
}


///////////////////////////////// * //////////////////////////////
// make Int * Double = Double derectly
@infix func *(lhsParam: Int, rhsParam: Double) -> Double {
    return Double(lhsParam) * rhsParam
}

// make Double * Int = Double derectly
@infix func *(lhsParam: Double, rhsParam: Int) -> Double {
    return lhsParam * Double(rhsParam)
}

// make Int * Float = Float derectly
@infix func *(lhsParam: Int, rhsParam: Float) -> Float {
    return Float(lhsParam) * rhsParam
}

// make Float * Int = Float derectly
@infix func *(lhsParam: Float, rhsParam: Int) -> Float {
    return lhsParam * Float(rhsParam)
}

// make Double * Float = Double derectly
@infix func *(lhsParam: Double, rhsParam: Float) -> Double {
    return lhsParam * Double(rhsParam)
}

// make Float * Double = Double derectly
@infix func *(lhsParam: Float, rhsParam: Double) -> Double {
    return Float(lhsParam) * rhsParam
}


///////////////////////////////// / //////////////////////////////
// make Int / Double = Double derectly
@infix func /(lhsParam: Int, rhsParam: Double) -> Double {
    return Double(lhsParam) / rhsParam
}

// make Double * Int = Double derectly
@infix func /(lhsParam: Double, rhsParam: Int) -> Double {
    return lhsParam / Double(rhsParam)
}

// make Int / Float = Float derectly
@infix func /(lhsParam: Int, rhsParam: Float) -> Float {
    return Float(lhsParam) / rhsParam
}

// make Float / Int = Float derectly
@infix func /(lhsParam: Float, rhsParam: Int) -> Float {
    return lhsParam / Float(rhsParam)
}

// make Double / Float = Double derectly
@infix func /(lhsParam: Double, rhsParam: Float) -> Double {
    return lhsParam / Double(rhsParam)
}

// make Float / Double = Double derectly
@infix func /(lhsParam: Float, rhsParam: Double) -> Double {
    return Float(lhsParam) / rhsParam
}









test in main.swift:

import Foundation

println("test begin!")
println(1 + 2.0)
println(2.0 + 1)
println(Float(1.0) + 2.0)
println(1 - 2.0)
println(1.0 - 2)
println(1 * 2.0)
println(1 / 2.0)
println(1.0 / 2)
println(1 / 2.0)
println(1 % 2.0)
println(1.0 % 2)

result:

test begin!
3.0
3.0
3.0
-1.0
-1.0
2.0
0.5
0.5
0.5
1.0
1.0
Program ended with exit code: 0




目录
相关文章
|
4月前
|
存储 Swift
在Swift编程语言中,浮点数类型
在Swift编程语言中,浮点数类型
31 6
|
4月前
|
Swift
在Swift编程语言中,整数类型
在Swift编程语言中,整数类型
22 1
|
7月前
|
存储 Swift C++
41 Swift不透明类型
Swift不透明类型
29 0
|
7月前
|
算法 Swift C++
34 Swift为了协议 关联类型
Swift为了协议 关联类型
39 0
|
26天前
|
安全 Swift
Swift 语言:什么是可选类型(Optional)?如何处理可选类型的安全解包?
Swift的可选类型是处理值可能缺失的类,用?表示。它们能表示有值或无值状态。安全解包用`if let`或`guard let`避免崩溃,而强制解包`!`则风险较高,若值为`nil`会触发运行时错误。
9 0
|
4月前
|
Swift
在Swift编程语言中,有符号整数类型
在Swift编程语言中,有符号整数类型
25 2
|
4月前
|
编译器 Swift
在Swift编程语言中,布尔类型
在Swift编程语言中,布尔类型
21 1
|
Swift
Swift - 如何让UIView,UILabel和UIImageView之间类型互相转化
Swift - 如何让UIView,UILabel和UIImageView之间类型互相转化
119 0
|
安全 编译器 API
Swift 中的幻象类型
模糊的数据可以说是一般应用程序中最常见的错误和问题的来源之一。虽然 Swift 通过其强大的类型系统和完善的编译器帮助我们避免了许多含糊不清的来源——但只要我们无法在编译时保证某个数据总是符合我们的要求,就总是有风险,我们最终会处于含糊不清或不可预测的状态。
98 0
Swift 中的幻象类型
|
Swift
Swift实用小册22: OpaqueTypes不透明类型的使用
在本章中,你将学会OpaqueTypes不透明类型的使用方法。
243 0
Swift实用小册22: OpaqueTypes不透明类型的使用