我将活动模式“表达式”定义如下:
let (|Expression|_|) expression _ = Some(expression)
现在我正在尝试以这种方式使用它:
match () with
| Expression((totalWidth - wLeft - wRight) / (float model.Columns.Count - 0.5)) cw
when cw <= wLeft * 4. && cw <= wRight * 4. ->
cw
| Expression((totalWidth - wLeft) / (float model.Columns.Count - .25)) cw
when cw <= wLeft * 4. && cw > wRight * 4. ->
cw
| Expression((totalWidth - wRight) / (float model.Columns.Count - .25)) cw
when cw > wLeft * 4. && cw <= wRight * 4. ->
cw
| Expression(totalWidth / float model.Columns.Count) cw
when cw > wLeft * 4. && cw > wRight * 4. ->
cw
| _ -> System.InvalidProgramException() |> raise
但这会导致“错误 FS0010:模式中出现意外符号 '-'”。那可以修吗?
我想要做的是清楚地写出以下方程的解:
max(wl - cw * .25, 0) + max(wr - cw * .25) + cw * columnCount = ActualWidth
其中 cw 是唯一的变量。
你能提出更好的方法吗?