我在scala
返回要麼null
或List[Double]
或List[List[List[Double]]]
按條件已經函數。我使用關鍵字Any
來定義return type
,它適用於我,但如果我試圖使用List
的屬性(如返回值的「長度」),它會給我錯誤,如value length is not a member of Any
。階函數返回類型之一或
def extract_val(tuple: Tuple3[String,List[Double],List[List[List[Double]]]]): (Any) ={
/*
do something here
*/
}
我試圖找出一些方法,這樣我可以定義兩種或我的函數定義返回類型:
def extract_val(tuple: Tuple3[String,List[Double],List[List[List[Double]]]]): (either Type A or either Type B) ={
/*
if something :
return null
elif something:
return Type A
elif something
return Type B
*/
}
我使用的是現在,我已經定義的函數OR operator
as (Type A || Type B)
但我得到了一些錯誤not found type ||
。任何幫助都會非常有用。
OR運算符爲類型被稱爲'\ /'(類似的邏輯析取符號,∨),並且可以在[Scalaz]中找到(https://scalaz.github.io/scalaz/)圖書館。 –
我可能會建議你返回'Option [或者[A,B]]'。 'Option []'這樣你可以使用'None'而不是'null'和'''''''在兩個不相關的類型中進行選擇。 – jwvh
如果你只需要結果列表的屬性,你可以使用返回類型:'List [Any]'。它可以處理所有三種可能的返回值,儘管這不是一個好的設計。 – ntn