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




目录
相关文章
|
7月前
|
存储 Swift
在Swift编程语言中,浮点数类型
在Swift编程语言中,浮点数类型
91 6
|
7月前
|
存储 Swift iOS开发
在Swift编程语言中,集合类型`Set`
在Swift编程语言中,集合类型`Set`
59 2
|
7月前
|
Swift
在Swift编程语言中,整数类型
在Swift编程语言中,整数类型
76 1
|
存储 Swift C++
41 Swift不透明类型
Swift不透明类型
52 0
|
算法 Swift C++
34 Swift为了协议 关联类型
Swift为了协议 关联类型
75 0
|
27天前
|
Swift 索引 容器
Swift 泛型-扩展泛型类型
Swift 泛型-扩展泛型类型
25 2
|
27天前
|
Swift 索引
Swift 泛型-类型约束
Swift 泛型-类型约束
25 1
|
1月前
|
安全 Swift iOS开发
Swift 可选(Optionals)类型
10月更文挑战第24天
38 2
|
7月前
|
存储 安全 Swift
【Swift开发专栏】Swift中的集合类型:数组、字典与集合
【4月更文挑战第30天】本文探讨Swift的三种内置集合类型:数组、字典和集合。数组是有序元素集合,支持动态大小调整和类型安全;字典是无序键值对,适用于快速查找;集合是无序不重复元素集合,适合检查元素存在性和集合运算。理解这些特性和用法能提升Swift编程效率。
71 1
|
7月前
|
人工智能 物联网 API
LLM 大模型学习必知必会系列(十三):基于SWIFT的VLLM推理加速与部署实战
LLM 大模型学习必知必会系列(十三):基于SWIFT的VLLM推理加速与部署实战
LLM 大模型学习必知必会系列(十三):基于SWIFT的VLLM推理加速与部署实战