> (Console.Read() = (int 'd'));;
d
val it: bool = true
> (Console.Read() = (int 'd')) && (Console.Read() = (int 'o'));;
val it: bool = false
Run Code Online (Sandbox Code Playgroud)
它似乎在没有调用 Read 的情况下终止,编译器如何知道使表达式为 false?
使用 Read() 时必须小心,它还会获取行终止符。如果您启动一个干净的 F# 交互式会话并执行以下操作,您可以看到这一点:
> Console.Read();;
d
val it : int = 100
> Console.Read();;
val it : int = 13
> Console.Read();;
val it : int = 10
Run Code Online (Sandbox Code Playgroud)
显然我是在 Windows 上执行此操作的,因为行终止符是 \r\n。
您可能应该使用 ReadKey()(不能在 FSI 会话中使用)或 ReadLine()。例如,
> Console.ReadLine() = "do";;
do
val it : bool = true
>
Run Code Online (Sandbox Code Playgroud)