这句话意味着什么,为什么我会编写这样的代码?
let id x = x in (id 3, id "Three")
F#3.0规范:6.6定义表达式
答案 0 :(得分:3)
它定义了身份功能:
let id x = x
in
这个表达式:
(id 3, id "Three")
因此,此表达式的结果是(int * string):
(3, "Three")
编辑:
您不一定需要编写这样的代码(可能在极少数情况下)。默认情况下,F#使用light
语法而不使用in
,如下所示:
let id x = x // Define the function
(id 3, id "Three") // Apply it to the elements of tuple
当您使用verbose
语法时,您不必遵循空格缩进规则。这里更清楚地描述:http://fsharpforfunandprofit.com/posts/fsharp-syntax/
我相信详细的语法主要用于需要在单行表达式中使用let
的样本
答案 1 :(得分:2)
let v = expr in body
定义名为v
的新环境绑定到expr
,然后在创建的环境中评估body
。在这种情况下,id
被定义为类型a -> a
的函数,它只返回其参数。身体
(id 3, id "Three")
然后使用绑定到上述函数的id
来评估。
答案 2 :(得分:1)
如果var html = {reward.amount.toLocaleString()} + "€<br>" +{moment(expiracyDate).format('DD/MM/YYYY')} + " <br>";
var e = document.createElement('div');
e.innerHTML = html;
则a)id x = x
和b)id 3 = 3
。将其放在id "three" = "three"
中,如果我们(id 3, id "three")
,那么结果就是let id x = x
。这是它的要点。