2017-04-24 99 views
2

我已經完成了我一直在處理的項目,但我希望返回並清理我的代碼。在這個例子中,我使用了一個可變變量,但是我希望我的代碼不包含任何可變變量。我將如何重寫這段代碼來返回一個布爾,但它不可變嗎?F#需要重寫代碼才能不需要可變變量

let mutable duplicates = false 

for el in (combo|>Seq.head) do 
    let exists = Seq.exists (fun x -> x = el) (combo|>Seq.item 1) 
    duplicates <- exists 

任何幫助將不勝感激,歡呼!

回答

4
let t = Seq.item 1 combo 
let duplicates = Seq.head combo |> Seq.exists (fun el -> Seq.contains el t) 

The usual caveats有關以這種方式處理seq略施。

+0

欣賞答案,完美作品!低效率在我的項目中並不重要。 – TJ8

1
let s1 = combo |> Seq.head 
let s2 = combo |> Seq.item 1 
let duplicates = System.Linq.Enumerable.Intersect(s1, s2) |> Seq.isEmpty |> not 
+0

感謝您的迴應,這工作,但我與其他答案一起去,因爲它更簡單,我並不需要使用Linq。 – TJ8