我想了解活動模式,所以我用FizzBuzz玩弄: let (|Fizz|_|) i = if i % 3 = 0 then Some Fizz else None
let (|Buzz|_|) i = if i % 5 = 0 then Some Buzz else None
let (|FizzBuzz|_|) i = if i % 5 = 0 && i % 3 = 0 then Som
Scala中是否存在允許提取器採用自定義參數的語法?這個例子有點做作。假設我在整數上有一個二叉搜索樹,並且如果它的值可以被某個自定義值整除,我想匹配當前節點。 使用F#活動模式,我可以做到以下幾點: type Tree =
| Node of int * Tree * Tree
| Empty
let (|NodeDivisibleBy|_|) x t =
mat
在下面的代碼中,我必須在每次迭代中重複使用活動模式結果三次。即 match tree.Parent, postion with
我發現我可以保存活動模式結果。即 let pos = ((|Root|Nil|Single|First|Inner|Last|Unknown|) (tree.Parent, position))
我無法弄清楚的是如果活動模式結果可用於匹配語句。即 match po
該有源圖案與F#2.0編譯: let (|Value|_|) value = // 'a -> 'T option
match box value with
| :? 'T as x -> Some x
| _ -> None
但是,在F#3.0,發出錯誤: Active pattern '|Value|_|' has a result type containi
升級到VS 2012 RTM後,this question中的活動模式無法編譯。它提供了一種方法來進行類型測試並在單個模式中匹配文字。例如: let (|Value|_|) value =
match box value with
| :? 'T as x -> Some x
| _ -> None
let getValue (name: string) (r: