能否在F#中定义**运算符?现有定义被识别为注释求解决方法
F#中定义
(**)运算符的解决方案 直接写let (**) ls1 ls2 = List.intersect ls1 ls2会报错,因为F#里(**是多行注释的起始标记,编译器会把它解析成注释开头,而非运算符定义。有两种可行方案:
用反引号包裹运算符:F#允许用反引号(
`)将包含特殊字符或会触发语法解析冲突的标识符括起来,这样就能让编译器正确识别这是一个运算符。示例代码:let (``**``) ls1 ls2 = List.intersect ls1 ls2 // 使用时同样要带反引号 let result = [1;2;3] ``**`` [2;3;4]替换为无冲突的运算符:如果不想用反引号,可以换用类似的、不会触发注释解析的运算符,比如
(^^)或(***),示例:let (^^) ls1 ls2 = List.intersect ls1 ls2 let result = [1;2;3] ^^ [2;3;4]
内容的提问来源于stack exchange,提问作者citykid
相关产品推荐
相关产品推荐

