如何在 let 语句中使用 if 语句?

the*_*eva 1 sml

我希望这个工作:

fun function (i) =
   let 
       if i = 1 then
           val h = valOf(Int.fromString(valOf(TextIO.inputLine TextIO.stdIn)))
       else
           val h = someFunction();
   in

       code...
   end
Run Code Online (Sandbox Code Playgroud)

但似乎你不能声明这样的值......我应该怎么做才能让它工作?

Tay*_*can 6

ifML 中的语句是一个表达式。这意味着它必须具有价值。请记住,SML 中的值声明如下所示:

val <name> = <expression>
Run Code Online (Sandbox Code Playgroud)

由于if ... then ... else语句是一个表达式,您可以在=.

fun function i =
  let
    val h = if i = 1 then ...
                     else ...
  in
    ...
  end
Run Code Online (Sandbox Code Playgroud)

另一件事。请记住,这valOf可能会出错。在输入上使用它几乎会导致您的程序崩溃,因为用户可以输入任何内容。