我正在阅读文档并点击了该段落
有两种连接字符串的方法:使用+运算符或使用^运算符。+运算符保持与.NET Framework字符串处理功能的兼容性。
我把它砸进了linqpad,它运行正常,但是我得到了警告
此构造用于ML兼容性。考虑改用'+'运算符
在网上搜索了更多详细信息,但想到了nix。
谁能详细说明^的预期功能?
scr*_*wtp 13
简短的回答- 操作员可以互换使用,+而不是^像警告中所提示的那样。
更长的答案:查看FSharp.Core,您会发现这两个运算符都内联并遵循System.String.Concat。
见这里的^:
let inline (^) (x:string) (y:string) = System.String.Concat(x,y)
Run Code Online (Sandbox Code Playgroud)
和这里的+:
let inline (+) (x: ^T) (y: ^U) : ^V =
AdditionDynamic<(^T),(^U),(^V)> x y
...
when ^T : string and ^U : string =
(# "" (System.String.Concat((# "" x : string #),(# "" y : string #))) : ^T #)
Run Code Online (Sandbox Code Playgroud)
与+定义是更复杂,但熬煮至同样的事情。
^在将OCaml代码轻松移植到F#被认为是该语言的重要卖点之时,OCaml似乎采用了F#中许多(实际上是过时)的构造之一。
value prefix ^ : string -> string -> string
s1 ^ s2 returns a fresh string containing the concatenation of the strings s1 and s2.
Run Code Online (Sandbox Code Playgroud)
我真的不记得曾经^在实践中看到过使用代码,也无法告诉F#如果您问过我是否有这个运算符。
| 归档时间: |
|
| 查看次数: |
122 次 |
| 最近记录: |