1 iOS Programming. 類別 class Employee{ var no:Int=0 var name:String="" var job:String? } var (or...
-
Upload
shanna-blankenship -
Category
Documents
-
view
220 -
download
3
Transcript of 1 iOS Programming. 類別 class Employee{ var no:Int=0 var name:String="" var job:String? } var (or...
類別 class Employee{
var no:Int=0
var name:String=""
var job:String?
}
var (or let) emp1=Employee()
emp1.name="John"
emp1.job="Teacher“
var (or let) emp2=Employee()
emp2.name="Mary"
if emp1===emp2 {
println("emp1===emp2")
}else{
println("emp1!==emp2")
}
類別 class Employee{
var name:String=""
var upperName:String{
get{
return name
}
set(inName){
name=inName.uppercaseString
}
}
}
Getter & Setter var emp=Employee()
emp.upperName="John"
println("\(emp.upperName)")
類別 class Employee{
var name:String=""
var upperName:String{
return name
}
}
Readonly var emp=Employee()
emp.upperName="John"
println("\(emp.upperName)")
類別 實體方法
◦ class Employee{◦ var name:String=""◦ func echoName()->String{◦ return name◦ }◦ }◦ var emp=Employee()◦ emp.name="John"◦ println("\(emp.echoName())")
類別 靜態方法
◦ class Employee{◦ var name:String=""◦ class func countSalary(hours:Int)->Int{◦ return hours*115◦ }◦ }◦ println("\(Employee.countSalary(15))")
類別 建構子
◦ class Employee{◦ let no:Int◦ var salary:Double◦ var name:String=""◦ init(){◦ no=5◦ salary=115◦ }◦ }
◦ var emp=Employee()
類別◦ class Employee{◦ let no:Int◦ var salary:Double◦ var name:String="" ◦ init(no:Int,salary:Double){◦ self.no=no◦ self.salary=salary◦ }◦ }
◦ var emp=Employee(no:10,salary:200.0)
◦ class Employee{◦ let no:Int◦ var salary:Double◦ var name:String=""◦ init(N no:Int,S salary:Double){◦ self.no=no◦ self.salary=salary◦ }◦ }
◦ var emp=Employee(N:10,S:200.0)
類別 建構子橫向代理
◦ class Employee{◦ let no:Int◦ var salary:Double◦ convenience init(){◦ self.init(no:40,salary:300.0)◦ }◦ init(no:Int,salary:Double){◦ self.no=no◦ self.salary=salary◦ }◦ }
類別 解構子
◦ class Employee{◦ …◦ deinit{◦ println("deinit")◦ }◦ }
◦ var emp:Employee?=Employee()◦ emp=nil
類別 optional
◦ class Employee{◦ var name:String?◦ var job:String?◦ }
◦ var emp:Employee?=Employee()◦ emp!.name="John"◦ emp?.job="Teacher"
◦ class Employee{◦ var name:String?◦ var job:String?◦ var dept:Department?◦ }◦ class Department{◦ var name:String="Sales"◦ }
◦ var emp:Employee=Employee()◦ println("\(emp.dept?.name)")◦ println("\(emp.dept!.name)")
類別繼承 class Person{
var name:String
var age:Int
init(age:Int,name:String){
self.age=age
self.name=name
}
}
class Student:Person{
var school:String
init(school:String){
self.school=school
super.init(age: 20, name: "John")
}
}
建構子繼承
類別繼承 class Student:Person{
var school:String
override var age:Int{
get{
return super.age
}
set{
super.age=newValue+5
}
}
}
var s:Student=Student(school: "NOTU")
s.age=30
println("\(s.age)")
屬性覆蓋
類別繼承 class Student:Person{
var school:String
func desc()->Void{
println("age=\(age),name=\(name)")
}
}
class Student:Person{
var school:String
override func desc()->Void{
super.desc()
println("age=\(self.age),name=\(name)")
}
}
屬性覆蓋
類別繼承 is 運算子
◦ class Person{◦ }◦ class Student:Person{◦ }
◦ if s is Student {◦ println("s is Student")◦ }
類別繼承 as 運算子
◦ class Person{◦ }◦ class Student:Person{◦ }
◦ var p:Person=Student(school: "NTOU")◦ var s:Student=p as! Student
列舉 enum WeekDays{
case Mon
case Tue
case Wed
case Thu
case Fri
}
enum WeekDays{
case Mon,Tue,Wed,Thu,Fri
}
func dayText(d:WeekDays){
switch d{
case .Mon:
println(" 星期一 ")
case .Tue:
println(" 星期二 ")
default:
println("Default")
}
}
var day=WeekDays.Mon
dayText(day)
列舉 enum Figure{
case Rect(Int,Int)
case Circle(Int)
}
func processFigure(figure:Figure){
switch figure {
case .Rect(let w, let h):
println("Rect")
case .Circle(let r):
println("Circle")
}
}
var f=Figure.Rect(10, 5)
processFigure(f)
f=Figure.Circle(10)
processFigure(f)
Struct struct Department {
let no:Int=0
var name:String=""
}
var (or let) dept:Department=Department()
dept.name="Salse"
Struct class Employee{
let no:Int=0
var name:String=""
}
func updateEmp(emp:Employee){
emp.name="John"
}
OK!
struct Department{
let no:Int=0
var name:String=""
}
func updateDept(dept:Department){
dept.name="Salse"
}
Error!
Struct Method
◦ struct Department{◦ let no:Int=0◦ var name:String=""◦ static var companyName:String="NTOU"◦ static func getCompanyName()->String{◦ return companyName◦ }◦ mutating func changeName(newName:String){◦ name=newName◦ }◦ }
◦ var dept:Department=Department()◦ dept.changeName("HR")◦ println("\(dept.name)")
◦ println("\(Department.getCompanyName())")
延遲屬性 Lazy
◦ class Employee{◦ let no:Int=0◦ var name:String=""◦ lazy var dept:Department=Department()◦ }◦ struct Department{◦ let no:Int=0◦ var name:String=""◦ }
AnyObject and Any class Person{
}
class Student:Person{
}
class Worker{
}
var Person1:Person=Person()
var Student1:Student=Student()
var Student2:Student=Student()
var Worker1:Worker=Worker()
var Worker2:Worker=Worker()
let People1:[AnyObject]=[Person1,Student1,Student2,Worker1,Worker2]
let People2:[Any]=[Person1,Student1,Student2,Worker1,Worker2]
for item in People1{
if item is Student {
println("Student")
}
}
Extension 延伸屬性
◦ extension Int{◦ var errorMsg:String{◦ var errorText=""◦ switch self {◦ case -1:◦ errorText="Eroor 1"◦ case -2:◦ errorText="Eroor 2"◦ default:◦ errorText=""◦ }◦ return errorText◦ }◦ }
◦ i:Int=(-1)◦ println("\(i.errorMsg)")
◦ class Employee{◦ var no:Int=0◦ var name:String=""◦ }
◦ extension Employee{◦ var deptName:String{◦ return "DeptName"◦ }◦ }
◦ var emp:Employee=Employee()◦ println("\(emp.deptName)")
Extension 延伸方法
◦ extension Double{◦ static var Rate=0.8◦ func getDiscount1()->Double{◦ return self*Double.Rate◦ }◦ mutating func changeValue(newValue:Double){◦ self=newValue◦ }◦ static func getDiscount2(v:Double)->Double{◦ return v*Rate◦ }◦ }
◦ var d:Double=900.0◦ d.changeValue(800.0)◦ println("\(d.getDiscount1())")◦ println("\(Double.getDiscount2(500))")
Protocol protocol Figure{
func onDraw()->Void
}
Rect:Figure{
func onDraw() {
println("Rect Draw")
}
}
struct Circle:Figure{
func onDraw() {
println("Circle")
}
}
let rect:Figure=Rect()
rect.onDraw()
let circle:Figure=Circle()
circle.onDraw()
Protocol protocol Figure{
static func onDraw()->Void
}
class Rect:Figure{
class func onDraw() {
println("Rect Draw")
}
}
struct Circle:Figure{
static func onDraw() {
println("Circle")
}
}
Rect.onDraw()
Circle.onDraw()
Protocol protocol Figure{
mutating func onDraw()->Void
}
class Rect:Figure{
var isDraw:Bool=false
func onDraw() {
println("Rect Draw")
isDraw=true
}
}
struct Circle:Figure{
var isDraw:Bool=false
mutating func onDraw() {
println("Circle")
isDraw=true
}
}
Protocol protocol Person{
var name:String{get set}
var fullName:String{get}
}
class Employee:Person{
var name:String=""
var fullName:String{
get{
return name.uppercaseString
}
set(newValue){
self.name=newValue
}
}
}
Protocol protocol Person{
static var fullName:String{get}
}
class Employee:Person{
class var fullName:String{
return "John"
}
}
struct Manager:Person {
static var fullName:String=""
}
參考 class Employee{
var dept:Department?
init(){
dept=Department(emp:self)
}
}
class Department {
var emp:Employee
init(emp:Employee){
self.emp=emp
}
}
強參考
強參考