2016-11-29 70 views

回答

2

爲了補充羅迪的回答中,有四種方式,你可以這樣做:

  1. 使用條件,並拋出一個異常,如果該參數不的預期類型。這種方法的問題是你必須寫很多代碼。
  2. 使用斷言。參見Rody的回答或here。人們可以爭辯說,這不是什麼斷言應該用於,但你可以這樣使用它們。
  3. 使用validateattributes函數。見here。這是簡單性和實用性之間非常好的平衡。它允許您檢查參數中的多個屬性(通常是任何代碼的任何部分的變量)
  4. 使用inputParser類。見here。這是解析輸入的最強大的方法,但可能是矯枉過正的。此外,創建對象的成本意味着對重複調用的函數可能不是一個好主意。不過,這對公共API非常有用。
6

不在函數簽名上。通常情況下,您通過斷言塊做到這一點:

function (obj, param) 

    assert(isa(param, 'uint8'),... 
      [mfilename ':invalid_datatype'],... 
      'Parameter ''param'' must be of class ''uint8''; received ''%s''.',... 
      class(param));