yus*_*suf 8 f# pattern-matching
我有这样一个功能:
let RotateFace (face: int, turns: int) =
match face with
| upperface ->
TiltCube(2)
TwistCube(turns)
TiltCube(2)
| leftface ->
TiltCube(3)
TwistCube(turns)
TiltCube(1)
| frontface ->
TurnCube(1)
TiltCube(3)
TwistCube(turns)
TiltCube(1)
TurnCube(3)
| rightface ->
TiltCube(1)
TwistCube(turns)
TiltCube(3)
| backface ->
TiltCube(3)
TwistCube(turns)
TiltCube(1)
| downface ->
TurnCube(3)
TiltCube(3)
TwistCube(turns)
TiltCube(1)
TurnCube(1)
| _ -> ()
Run Code Online (Sandbox Code Playgroud)
在我的案例"'上面','左脸','前脸','右脸','背面','下脸'和'_'上,我有一个"这条规则永远不会匹配"的问题."
我看过这个链接;
但说实话,我不明白我的情况应该怎么做.
你无法匹配一个变量,我的意思是你可以,但是如果你这样做会发生什么,变量将被绑定到该值,在我看来,这不是你想要做的,否则第一个案例在您的代码将"吃掉"所有其他情况,这就是为什么永远不会匹配以下规则.
您可以匹配条件:
let RotateFace (face: int, turns: int) =
match face with
| x when x = upperface ->
TiltCube(2)
TwistCube(turns)
TiltCube(2)
Run Code Online (Sandbox Code Playgroud)
或upperface使用literal属性声明和其他变量作为常量:
[<Literal>]
let Upperface = 4
let RotateFace (face: int, turns: int) =
match face with
| Upperface ->
TiltCube(2)
TwistCube(turns)
TiltCube(2)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
922 次 |
| 最近记录: |