有什麼辦法可以獲取元組的長度。 我的意思是讓a=(1,2,3)
。我必須得到3
。F#:獲取元組的長度
我已經使用下面的代碼將元組轉換爲列表並嘗試獲取列表的長度,但結果有option
類型,我無法使用它。
let tupleToList t =
if Microsoft.FSharp.Reflection.FSharpType.IsTuple(t.GetType())
then Some (Microsoft.FSharp.Reflection.FSharpValue.GetTupleFields t |> Array.toList)
else None
與目前的做法(一個簡單的解決方案可能是最好的)是消除或解開正在引入的'選擇'; (例如,返回一個非元組的0或-1,否則返回列表的長度),或者在使用地點(例如將它視爲'可能代表或不代表列表'的任何選項)。 – user2864740
首先,元組的*長*在它的類型中是含蓄的 - 這就是爲什麼你不能獲得像這樣的函數而沒有反射*欺騙*(或其他一些運行時作弊;)) - 但在這種情況下,一個簡單的'tupleToList> >如果你對這個函數的輸入不是一個元組,那麼Option.map(List.length)'會給你'一些長度爲l和tuple的元組。 – Carsten