1.我們這裡寫了乙個函式,傳入的引數我們規定是number型別。**如下
接著如果我們又要寫乙個函式實現的業務跟上面這個一樣,但傳入的引數型別卻規定要string
那我們就得重新寫乙個一模一樣的函式,函式內的**如果很多很多,那顯然這是不可取的。
那如果我們把他的型別規定成any不就可以了嗎,但是這樣做的話就失去了型別檢測的意義。
我們既需要一定的型別檢測又不想出現**冗餘,范型就很好的解決了這一問題。
范型的作用:讓我們在呼叫乙個函式時可以自定義引數型別。就是把約束的能力交給呼叫者。
函式內的t代表的就是待會兒使用者要規定的型別。
若如54行你規定了number型別,傳入的資料卻是string型別則會報錯。
以上就是范型的定義和范型的函式。
舉個栗子:需要乙個類new乙個例項實現乙個方法像乙個陣列裡增加資料,然後實現乙個方法列印陣列裡的最小值。
一般我們會這樣寫:
那如果我們像陣列裡傳入的資料不一定是number型別,還需要string那可咋整呢,如abcd,依據ascall碼值得出最小值。
那我們就得重寫乙個類和方法宣告傳入的引數為string這明顯是不必要的操作。
那下面我們就用范型類解決這一問題。
這樣我們就可以在new乙個例項時自定義規範的型別。簡化了冗餘的**。
之前我們寫過的函式型別介面如下:
接下來我們把它改造成乙個范型介面
寫法一:
寫法二:
下面我們看看把類作為引數的范型類,我們來做以下操作。
首先定義乙個user類作為對映資料庫字段
然後定義乙個mysqldb的類用於運算元據庫
然後把user類作為引數傳入到mysqldb中。
接著我們又需要乙個articlecate類實現跟剛剛差不多的操作。
那我們又得重寫下這個mysqldb
接下來我們就用范型類來簡化這些操作。
且新建了update模擬資料庫操作,
因為update需傳入引數,那我們就可以直接在articlecate類裡書寫構造器並規定傳入的引數。
最後每次new例項時規定引數並執行函式就可以啦。
Lua學習筆記之迭代器與范型for
lua學習筆記之迭代器與范型for 1 迭代器與閉包 迭代器是一種支援指標型別的結構,它可以遍歷集合的每乙個元素。迭代器需要保留上一次成功呼叫的狀態和下一次成功呼叫的狀態,也就是它知道來自於 和將要前往 閉包提供的機制可以很容易實現這個任務。記住 閉包是以惡搞內部函式,它可以訪問乙個或者多個外部函式...
java基礎 范型的學習
低調做人,高調做事加油 在我們使用集合的時候如果我們不實用范型我們存進去的資料都會被當作乙個object類來處理,編譯的時候classcastexception容易發生,因此引入范型來記錄存入集合中的資料的型別。public class listdemo 以上是范型的簡單的使用 通過 尖括號內部指定...
ts學習筆記(1)
ts的介面有兩種,乙個是物件型別介面,乙個是函式型別介面 先來看物件型別的介面 inte ce a var obj1 a 介面定義了什麼屬性,該介面型別的物件就只能有這些屬性,如果再新增其他屬性則會報錯。表示該屬性可以沒有 inte ce a inte ce b var result functio...