0 f#
我的代码:
let main _ =
let t = (System.Console.In.ReadLine ()) |> int
for i in 1..t do
let n = (System.Console.In.ReadLine ()) |> int
0
Run Code Online (Sandbox Code Playgroud)
我得到的错误如下:这个'let'之后的块未完成.每个代码块都是一个表达式,必须有结果.'let'不能是块中的最终代码元素.考虑给这个块一个明确的结果.
你能帮助我吗 ?非常感谢你 .
为了更详细地说明为什么需要这样做 - 在F#中,除了类型和模块定义之外,所有内容都是具有一些返回值的表达式.这甚至适用于这样的事情printf- 它们仍然返回值,但它是单位值,写为(),表示没有信息的虚拟值.
问题是它let <var> = <expr>不是一个完整的表达式,因为它不会返回任何内容.完整的形式是let <var> = <expr1> in <expr2>.这会将结果赋给<expr1>变量<var>并计算<expr2>并返回结果.如果您正在使用换行符,则可以省略in,但仍需要一些正文.
在你的例子中,最好的选择是使用()身体,因为你没有返回任何有用的东西.您可以使用in或使用换行符来编写此内容:
for i in 1..t do
let n = (System.Console.In.ReadLine ()) |> int in ()
for i in 1..t do
let n = (System.Console.In.ReadLine ()) |> int
()
Run Code Online (Sandbox Code Playgroud)
这不是一个非常有用的东西,因为你没有n在任何地方使用,但这是另一个问题.