【发布时间】:2010-10-25 22:16:47
【问题描述】:
我正在学习 F#。我首先查看了来自 Microsoft 的 F# samples。
我遇到了这个声明:
let line1,line2 =
use sr = System.IO.File.OpenText @"test.txt"
let line1 = sr.ReadLine()
let line2 = sr.ReadLine()
(line1,line2)
谁能给我解释一下这个说法?
这里定义了什么类型?一个函数?一个元组?
为什么line1和line2必须在line1,line2的定义中重新定义(let line1 =...let line2 =)?
最后一行(line1, line2) 是什么,它与原始定义的类型有何关联?这是函数返回吗?
“声明”是否是在 F# 中用于定义的正确词?
谢谢。
【问题讨论】:
-
奇怪的问题。我还不知道 F#,但似乎很清楚没有定义任何类型—— line1 和 line1 被赋予在产生元组的表达式中计算的值。询问“重新定义” line1 和 line2 很奇怪,因为它们在不同的范围内。这与
x = foo();没有什么不同,其中 foo 有一个名为 x ... 的局部变量...同名,但变量/插槽/对象/实例/whathaveyou 完全不同。
标签: syntax f# tuples semantics let