活动模式的别名?
Alias for active pattern?
我在模块 Helper
中有以下定义。
module Helper
let (|InvariantEqualLooooongName|_|) (str : string) arg =
if String.Compare(str, arg, StringComparison.OrdinalIgnoreCase) = 0 then Some()
else None
我想在另一个模块中使用它。
let rec MyFunc .... =
let alias = Helper.InvariantEqualLooooongName // Error: The value, constructor, namespace or type 'InvariantEqualLooooongName' is not defined
match a with
| alias "xxx" :: tail -> .....
| alias "yyyy" :: tail -> ....
| alias "zzzz" :: tail -> ...
| alias "123" :: tail -> ...
然而,它得到了
的错误
The value, constructor, namespace or type 'InvariantEqualLooooongName' is not defined
如何定义活动模式的别名?
您可以像这样为活动模式创建别名:
let alias = Helper.(|InvariantEqualLooooongName|_|)
但我相信你不能在match
表达式中使用它,因为它没有特殊符号将无法识别。为了能够使用别名,您必须像这样定义它:
let (|Alias|_|) = Helper.(|InvariantEqualLooooongName|_|)
我在模块 Helper
中有以下定义。
module Helper
let (|InvariantEqualLooooongName|_|) (str : string) arg =
if String.Compare(str, arg, StringComparison.OrdinalIgnoreCase) = 0 then Some()
else None
我想在另一个模块中使用它。
let rec MyFunc .... =
let alias = Helper.InvariantEqualLooooongName // Error: The value, constructor, namespace or type 'InvariantEqualLooooongName' is not defined
match a with
| alias "xxx" :: tail -> .....
| alias "yyyy" :: tail -> ....
| alias "zzzz" :: tail -> ...
| alias "123" :: tail -> ...
然而,它得到了
的错误The value, constructor, namespace or type 'InvariantEqualLooooongName' is not defined
如何定义活动模式的别名?
您可以像这样为活动模式创建别名:
let alias = Helper.(|InvariantEqualLooooongName|_|)
但我相信你不能在match
表达式中使用它,因为它没有特殊符号将无法识别。为了能够使用别名,您必须像这样定义它:
let (|Alias|_|) = Helper.(|InvariantEqualLooooongName|_|)