import UIKit
struct Size {
var width = 0.0, height = 0.0
init() {
self.init(width: 2.0, height: 2.0)
}
init(width: Double, height: Double){
self.width = width
self.height = height
}
}
class Car {
var speed:Double
init(speed:Double) {
self.speed = speed
}
convenience init() {
self.init(speed: 60.0)
}
}
class Bus: Car {
var wheels : Int
init(wheels: Int) {
self.wheels = wheels
super.init(speed: 120.0)
}
convenience init() {
self.init(wheels: 6)
}
}
struct Vector2D {
var x = 0.0, y = 0.0
}
prefix operator +++
infix operator +- : AdditionPrecedence
infix operator *^ : MyPrecendernce
precedencegroup MyPrecendernce {
associativity: left
lowerThan: AdditionPrecedence
}
extension Vector2D : Equatable{
static func + (left: Vector2D, right: Vector2D) -> Vector2D {
return Vector2D(x: left.x + right.x, y: left.y + right.y)
}
static prefix func - (vector: Vector2D) -> Vector2D {
return Vector2D(x: -vector.x, y: -vector.y)
}
static func += (left: inout Vector2D, right: Vector2D) {
left = Vector2D(x: left.x + right.x, y: left.y + right.y)
}
static func == (left: Vector2D, right: Vector2D) -> Bool {
return (left.x == right.x) && (left.y == right.y)
}
static func != (left: Vector2D, right: Vector2D) -> Bool {
return !(left.x == right.x) && (left.y == right.y)
}
static prefix func +++ (vector: Vector2D) -> Vector2D {
return Vector2D(x: vector.x + vector.x, y: vector.y + vector.y)
}
static func +- (left: Vector2D, right: Vector2D) -> Vector2D {
return Vector2D(x: left.x + right.x, y: left.y - right.y)
}
static func *^ (left: Vector2D, right: Vector2D) -> Vector2D {
return Vector2D(x: left.x * right.x, y: left.y * right.y + left.y * right.y )
}
}
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.title = "控制器"
let a: String? = "dd"
if let b = a {
print(type(of: a), type(of: b))
}
let c = a ?? "default"
print(c, type(of: c))
let d = "ddd"
print("d: \(d)")
var str1: String? = "str1"
var str2: String? = "str2"
if let acturalStr1 = str1,let acturalStr2 = str2 {
let count1 = acturalStr1.count, count2 = acturalStr2.count
print(count1, count2)
}
while let acturalStr1 = str1, let acturalStr2 = str2 {
let count1 = acturalStr1.count, count2 = acturalStr2.count
print("22", count1, count2)
break
}
var strr: String! = "str!"
let count = strr.count
print("str! count", count)
var strOp: Optional<String> = "str optional"
if let actStrOp = strOp {
let count = actStrOp.count
print(count)
}
print(1.description)
let vector = Vector2D(x: 3.0, y: 1.0)
let anotherVector = Vector2D(x: 2.0, y: 4.0)
let combinedVector = vector + anotherVector;
print(combinedVector)
let positiveVector = Vector2D(x: 3.0, y: 4.0)
let negativeVector = -positiveVector
print(negativeVector)
var origional = Vector2D(x: 1.0, y: 2.0)
let vectorToAdd = Vector2D(x: 3.0, y: 4.0)
origional += vectorToAdd
print("+= 重载 : ", origional)
let v1 = Vector2D(x: 1, y: 2)
let v2 = Vector2D(x: 1, y: 2)
print("== 重载 : ", v1 == v2)
let vectorTobeDoubed = Vector2D(x: 1.0, y: 2.0)
let doubleVector = +++vectorTobeDoubed
print("+++ 自定义重载", doubleVector)
let firstV = Vector2D(x: 1.0, y: 3.0)
let secondV = Vector2D(x: 1.0, y: 1.0)
let result = firstV +- secondV
print("重载 +- : ", result)
let thirdV = Vector2D(x: 1.0, y: 2.0)
let result11 = firstV *^ secondV
print("重载 *^ : ", result11)
let result12 = firstV +- secondV *^ thirdV
print("优先级结合 +- *^ ", result12)
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
2016-05-25 ionic 写一个五星评价(非指令)