對於返回值型別不確定的函式如何限定返回值型別
情景描述
- 寫了一個controller function,想要使用他來處理獲取某一條記錄的功能。
- 但是困在了返回值型別,因為我們會處理,當要尋找的記錄不存在返回一種物件,當記錄存在返回記錄物件。
- 我不知道我應該設定什麼型別的返回值
矛盾點
- 如果我想要返回值型別是記錄類,那麼我該如何處理找不到記錄時候的返回物件呢?
解決
Q1:函式返回的是物件還是引用?
-
A1:
- 當函式的引數是一個物件的時候,我們很清楚傳進來的只是一個引用。
- 當函式的返回一個非基本型別資料的時候,返回的也是引用。
Q2:引用的值可以是什麼?
-
A2:可以是兩種:
- 對應物件的地址
- null
Q3:那麼問題的解決?
A3: 根據上面兩個問題我們可以知道,既然返回的是物件,物件包含兩種數值。因此我就可以當不存在記錄的時候返回null。存在記錄的時候返回記錄物件的引用
結論
- 寫完後發現自己傻了,java中除了基本型別,你能使用的不是都是引用嗎?就算是用建構函式構造出的物件返回的都是引用。所以就可以順利的解釋我可以返回null。
反思
- 先定論再找依據,費時間過多。花了大把的時間論證自己的結論是對的,說不定其實你的結論是錯的
ACTION
- 先下結論還是可以的,但是一個結論如果通過搜尋五分鐘內找不到想要的結果,不能再費時間,直接尋找問題的解答。
- 或者先到網上找到問題的解答,然後對解答提出疑惑,補充知識
相關文章
- 多型中的返回值型別多型型別
- 如何在Typescript中定義Promise的返回值型別TypeScriptPromise型別
- 形式引數和返回值型別的對比型別
- Go 之基礎速學 (二) 語法套路:型別、定義函式、返回值Go型別函式
- 《每天用對比的思想學點 golang》PHP 對比有意思的 go-定義函式,定義返回值型別GolangPHP函式型別
- js中的typeof返回值的所有型別JS型別
- Go 函式多返回值錯誤處理與error 型別介紹Go函式Error型別
- JavaSE 形參和返回值(引用型別)Java型別
- SpringMVC-方法四種型別返回值總結SpringMVC型別
- 使用自定義委託來呼叫Lua中的多返回值和長引數型別函式型別函式
- 函式引數 引數定義函式型別函式型別
- 函式的返回值函式
- TypeScript 函式型別TypeScript函式型別
- js基本資料型別與typeof返回值(圖示)JS資料型別
- Python 序列型別以及函式引數型別Python型別函式
- [20190630]如何確定直方圖型別.txt直方圖型別
- Gson針對API返回欄位型別不確定的解決辦法API型別
- 建構函式定義的隱式型別轉換函式型別
- 19、Overload和Override的區別。Overloaded的方法是否可以改變返回值的型別?IDE型別
- golang基礎語法,定義函式型別 為已存在的資料型別起別名Golang函式資料型別
- 0305函式返回值函式
- 函式的祕密之 函式返回值函式
- 胡說-JavaScript函式型別JavaScript函式型別
- PostgreSQL:字元——型別及函式SQL字元型別函式
- PHP 用 Enum 限定引數型別PHP型別
- string型別資料的find函式型別函式
- Python中定義(建立)、呼叫函式及返回值Python函式
- C語言中函式的返回值C語言函式
- 請別誤用 TypeScript 過載函式型別TypeScript函式型別
- 常見python資料型別及其相對應的函式Python資料型別函式
- SpringMVC-方法四種型別返回值總結,你用過幾種?SpringMVC型別
- 07:函式之函式的引數和返回值函式
- 第 8 節:函式-函式型別與作用域函式型別
- Python的函式形參和返回值Python函式
- react 報錯 元素隱式具有 "any" 型別,因為型別為 "string" 的表示式不能用於索引型別 "{}"。 在型別 "{}" 上找不到具有型別為 "string" 的引數的索引簽名。React型別索引
- String型別函式傳遞問題型別函式
- Oracle資料型別對應Java型別Oracle資料型別Java
- SAP RETAIL 如何確定自動補貨觸發的單據型別AI型別
- 【SQL】18 SQL NULL 函式、SQL 通用資料型別、SQL 用於各種資料庫的資料型別SQLNull函式資料型別資料庫