开发者

F# pattern matching

开发者 https://www.devze.com 2022-12-21 02:53 出处:网络
I\'m puzzled by how pattern matching works in F# for let. I\'m using the Visual Studio \'F# interactive\' window, F# version 1.9.7.8. Say we define a simple type:

I'm puzzled by how pattern matching works in F# for let. I'm using the Visual Studio 'F# interactive' window, F# version 1.9.7.8. Say we define a simple type:

type Point = Point of int * int ;;

and the try to pattern match against values of Point using let.

let Point(x, y) = Point(1, 2) in x ;;

fails with error FS0039: The value or constructor 'x' is not defined. How is one supposed to use pattern matching with let?

The most curious thing is that:

let Point(x, y) a开发者_StackOverflow中文版s z = Point(1, 2) in x ;;

returns 1 as expected. Why?


You need to put parenthesis around your pattern:

let (Point(x, y)) = Point(1, 2) in x ;;

Otherwise there's no way to distinguish the pattern from a function-binding...

0

精彩评论

暂无评论...
验证码 换一张
取 消