typealias : 類型別名, alias 別名的意思
import TBMtimeBaseControll
import RxCocoa
import RxSwift
// typealias 類型別名
public typealias Address = CGPoint
public typealias Time = Int
// 定義閉包
typealias SuccessCallBack = (_ code:String, _ message:String) ->Void
class MNFEnume: MNFBaseViewController {
var po1:CGPoint?
var po2:Address?
// 定義閉包 這兩種閉包聲明有什么區(qū)別 有個錘子 第二個明顯比第一個要好 用個錘子的typealias
var customCall:SuccessCallBack?
var callBack:((_ code:String, _ message:String) ->Void)?
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white
print("************************************")
custom1()
if let call = customCall {
call("你是誰","你管我是誰")
}
if let call = callBack {
call("你是誰22222","你管我是誰2222")
}
}
func custom1(){
po1 = CGPoint(x: 0, y: 0)
po2 = po1
// 這里po1與po2 其實一模一樣 typealias 相當(dāng)于將兩種類型相關(guān)聯(lián) 這樣容易誤導(dǎo)知道就好了
print("這里po1與po2 一模一樣,包括指針")
print(po1 as Any)
print(po2 as Any)
}
func custom2(_ index:Int) -> Int{
// 只看 index: Int 根本不知道 這個index 是干什么的 包括 返回了一個Int 根本清除干什么
return 1
}
func custom3(_ index:Time) -> Time {
// 從這里我們可以看到 需要傳進(jìn)來一個時間參數(shù) 并且返回的時候也返回了一個時間值 通過這樣我們可以一目了然明白 上下文邏輯
// 看似方便了 實際方便你媽了個屁!
/**
* 1、首先站在開發(fā)者的角度來說 沒說的 你明白就好 你想怎么寫就怎么寫 畢竟代碼是你的
* 2、站在閱讀者的角度,我們看到的代碼絕對不只一兩行 當(dāng)我們改動或者閱讀別人代碼的時候 肯定是一大片
* 1、首先 每個人的理解不同,往往一個英文單詞代表多重意思
* 2、我看代碼之前我還必須先一一記住你的定義 對應(yīng)的是哪種類型 ,我再去率代碼,我率你奶奶個爪,你在方法前寫上注釋不好嘛
* 非要我他媽去猜 猜不對時再去查看對應(yīng) 我猜你奶奶個爪
* 3、 這種只限于庫 以及基礎(chǔ)庫用法 在實際開發(fā)中 少他娘跟老子裝逼 老老實實寫上注釋
*/
return 2
}}