下面的行不會編譯:如何在使用「函數」語法執行模式匹配時檢索值?
| IsNeither -> sprintf "%i" // ???
這裏的功能,這行屬於:
let run = function
| IsFizzBuzz -> "Fizz Buzz"
| IsFizz -> "Fizz"
| IsBuzz -> "Buzz"
| IsNeither -> sprintf "%i" // Doesn't compile
這裏就是整個程序: 模塊溫度
let (|IsFizz|IsBuzz|IsFizzBuzz|IsNeither|) = function
| n when n % 3 = 0 &&
n % 5 = 0 -> IsFizzBuzz
| n when n % 3 = 0 -> IsFizz
| n when n % 5 = 0 -> IsBuzz
| n -> IsNeither
let run = function
| IsFizzBuzz -> "Fizz Buzz"
| IsFizz -> "Fizz"
| IsBuzz -> "Buzz"
| IsNeither -> sprintf "%i" // Doesn't compile
let result = [1..16] |> List.map(run)
我仍然可以使用簽名上的「函數」語法提取值嗎?
實施例:
let (|IsFizz|IsBuzz|IsFizzBuzz|IsNeither|) = function