Julia 可空類型

2018-08-12 21:26 更新

可空類型

在很多情況下, 你可能會碰到一些可能存在也可能不存在的變量. 為了處理這種 情況, Julia 提供了參數(shù)化的數(shù)據(jù)類型 Nullable{T}, 可以被當(dāng)做是一種特 殊的容器, 里面有 0 個或 1 個數(shù)據(jù). Nullable{T} 提供了最小的接口以保 證對可能是空值的操作是安全的. 目前包含四種操作 :

  • 創(chuàng)建一個 Nullable 對象.
  • 檢查 Nullable 是否含有數(shù)據(jù).
  • 獲取 Nullable 內(nèi)部的數(shù)據(jù), 如果沒有數(shù)據(jù)可被返回, 拋出 NullException.
  • 獲取 Nullable 內(nèi)部的數(shù)據(jù), 如果沒有數(shù)據(jù)可被返回, 返回數(shù)據(jù)類型 T 的默認值.

創(chuàng)建 Nullable 對象

使用 Nullable{T}() 函數(shù)來創(chuàng)建一個關(guān)于類型 T 的可空對象 :

   x1 = Nullable{Int}()
   x2 = Nullable{Float64}()
   x3 = Nullable{Vector{Int}}()

使用 Nullable(x::T) 函數(shù)來創(chuàng)建一個非空的關(guān)于類型 T 的可空對象 :

x1 = Nullable(1)
x2 = NUllable(1.0)
x3 = Nullalbe([1, 2, 3])

注意上面兩種構(gòu)造可空對象方式的不同: 對第一種方式, 函數(shù)接受的參數(shù)是類型 T; 另一種方式中, 函數(shù)接受的是單個參數(shù), 這個參數(shù)的類型是 T.

檢查 Nullabe 對象是否含有數(shù)據(jù)

使用 isnull 函數(shù)來檢查 Nullable 對象是否為空 :

   isnull(Nullable{Float64}())
   isnull(Nullable(0.0))

安全地訪問 Nullable 對象的內(nèi)部數(shù)據(jù)

使用 get 來安全地訪問 Nullable 對象的內(nèi)部數(shù)據(jù) :

   get(Nullable{Float64}())
   get(Nullable(1.0))

如果沒有數(shù)據(jù), 正如 Nullable{Float64}, 拋出 NullException 錯誤. get 函數(shù)保證了任何訪問不存在的數(shù)據(jù)的操作立即拋出錯誤。

在某些情況下, 如果 Nullable 對象是空的, 我們希望返回一個合理的默認值。我們可以將這個默認值穿遞給 get 函數(shù)作為第二個參數(shù) :

  get(Nullable{Float64}(), 0)
   get(Nullable(1.0), 0)

注意, 這個默認的參數(shù)會被自動轉(zhuǎn)換成類型 T。例如, 上面的例子中, 在 get 函數(shù)返回前, 0 會被自動轉(zhuǎn)換成 Float64. get 函數(shù)可以 設(shè)置默認替換值這一特性使得處理未定義變量變得非常輕松.

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號