【发布时间】:2016-12-07 14:19:28
【问题描述】:
以下行无法编译:
| 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
【问题讨论】:
标签: f# pattern-matching