枚举
public typealias Info = (title: String?, description: String?, thumbnail: String?, media: String?)
public enum WeChatSubtype {
case session(info: Info)
case timeline(info: Info)
case favorite(info: Info)
var scene: String {
switch self {
case .session:
return "0"
case .timeline:
return "1"
case .favorite:
return "2"
}
}
var info: Info {
switch self {
case .session(let info):
return info
case .timeline(let info):
return info
case .favorite(let info):
return info
}
}
var name: String {
return "jim";
}
}
let info = Info(
title: "Friends Text, \(UUID().uuidString)",
description: nil,
thumbnail: nil,
media: nil
)
let type = WeChatSubtype.timeline(info:info)
type.name
属性、回调、链式
class Person{
var name :String = ""
//计算属性
private var _age:String = ""
var age: String {
get {
return _age+"岁"
}
set {
_age = newValue
}
}
lazy var height = "18cm"
//只有get,只能内部set
private(set) var name2: String = ""
init() {
name2 = "jim"
}
public typealias SuccessHandler = (() -> Void)
var successClosure: SuccessHandler?
var errorClosure: ((_ err: String) -> Void)!
func success(closure: @escaping SuccessHandler) ->Self {
successClosure = closure
return self
}
func error(_ closure: @escaping (_ err: String) -> Void) -> Self {
errorClosure = closure
return self
}
//“_”是代表函数调用时,可以忽略参数名称
func test(name: String,_ age: String) {
}
func test2() {
errorHandler?("405")
}
var errorHandler : ((_ err: String) -> Person)?
}
var person = Person()
person.name2
person.success {
print("success>>")
}.error { (error) in
print("error>> "+error)
}
person.errorClosure?("4004")
person.successClosure?()
person.errorHandler = {(error)in
print(error)
return person;
}
person.test2();
网友评论