//定义一个可选类型,表示这个变量可以为nil
var intNumber : Int? = 100
//!表示强制解包
//在使用的时候 在变量后面添加一个! 表示拆包,可以取得真正的值
print(intNumber)
print(intNumber!)
效果图
//使用struce定义一个结构体
// 格式 struct + 结构体名字 { (结构体实现) }
struct Frame {
//存储属性 负责存储值得属性
var x : Float
var y : Float
var width : Float
var height : Float
//计算属性 负责将存储属性进行运算获得值的属性 自己实现get方法
// get 方法 在属性类型后面添加{} 使用get 关键字声明和实现get方法
// set 方法 同上
// set 方法不可以单独出现,必须搭配着get方法才可以出现,但是get方法可以单独出现
var centerX : Float {
get {
return x + width / 2
}
}
var centerY : Float {
get {
return y + height / 2
}
}
//结构体属性
static var myStruct = "asdfg"
//结构体中可以声明和实现一个函数
func sayHI() {
print("你好,我是一个方法")
}
// init 方法 要把所有的存储属性放进去
init (x newX : Float , y newY : Float , width newWidth : Float ,
height newHeight : Float) {
x = newX
y = newY
width = newWidth
height = newHeight
}
//结构体方法
//结构体方法只能调用结构体属性
static func sayMy() {
print(self.myStruct)
}
}
Frame.sayMy()
//不带static 调不出来sayHI()
</br>
//创建一个对象的方式,都是调用init方法
//第一种
var frame : Frame = Frame.init(x: 10, y: 10, width: 100, height: 100)
//第二种
var frame1 : Frame = Frame.init(x: 10, y: 10, width: 100, height: 100)
print("第一种 : \(frame)")
print("第二种 : \(frame1)")
print(frame1.centerX)
//调出sayHI()
frame.sayHI()
Paste_Image.png
</br>
类
// class + 类名 + { 类的实现 }
class Person {
//当给一个类写属性的时候,这个属性如果没有初值那就需要可选类型
var name : String?
var gender : String?
var age : Int?
var width : Float {
get {
return 200
}
set {
//set 方法中的newValue
self.width = newValue
}
}
//static 修饰的是类属性
//类属性只能由类函数调用
static var hobby : String? = "卡卡"
//普通函数里面不能调用类属性
func sayHI() {
print("你好啊 width : \(self.width)")
}
init(name newName : String , gender newGender : String , age newAge : Int) {
name = newName
gender = newGender
age = newAge
}
static func sayMy() {
print(self.hobby!)
}
}
Person.sayMy()
let person1 : Person = Person(name: "闪闪", gender: "男", age: 11)
person1.sayHI()
print(person1.name! , person1.age! , person1.gender!)
效果图
Paste_Image.png</br>
class School {
var teacher : String?
var student : String?
var name : String? {
get {
return "卡卡"
}
set {
//set方法中的newValue 表示数值
self.name = newValue
}
}
//static 修饰的是类属性
//类 属性只能由类函数调用
var age : Int? = 22
func sayHI() {
print("老师是 : \(self.name!) , 年龄是 : \(self.age!)")
}
init(teacher newTeacher : String , student newStudent : String) {
teacher = newTeacher
student = newStudent
}
}
let school : School = School(teacher : "老师" , student : "学生")
school.sayHI()
print(school.teacher! , school.student!)
效果图
Paste_Image.png</br>
//继承父类
Paste_Image.png
</br>
//继承父类
class Student : Person {
var number : Int?
//重写父类方法 : 需要添加override修饰
override func sayHI() {
print("家教")
}
// 重写父类的init函数
override init(name newName: String, gender newGender: String, age newAge: Int) {
super.init(name: newName, gender: newGender, age: newAge)
}
//在重新创建一个init方法的时候,还是需要super.init
init(number newNumer : Int) {
super.init(name: "卡卡", gender: "男", age: 22)
number = newNumer
}
}
let a : Student = Student(name: "闪闪", gender: "男", age: 24)
let b : Student = Student(number: 220)
a.sayHI()
print(b.number! , a.name! , a.age! , a.gender!)
效果图
Paste_Image.png闭包
myBlock = {
(a , b) -> Int in
return a > b ? a : b
}
var c = myBlock (a: 10, b: 5)