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