为什么这个布尔表达式 return 在每一项都为真时为假?
Why does this boolean expression return false when each term is true?
> (Console.Read() = (int 'd'));;
d
val it: bool = true
> (Console.Read() = (int 'd')) && (Console.Read() = (int 'o'));;
val it: bool = false
好像没有调用Read就终止了,编译器怎么知道让表达式为假?
您必须小心使用 Read(),它还会拾取行终止符。如果您启动一个干净的 F# 交互式会话并执行以下操作,您可以看到这一点:
> Console.Read();;
d
val it : int = 100
> Console.Read();;
val it : int = 13
> Console.Read();;
val it : int = 10
显然我是在 Windows 上做的,因为线路终止是 \r\n。
您可能应该使用 ReadKey()(不能在 FSI 会话中使用)或 ReadLine()。例如,
> Console.ReadLine() = "do";;
do
val it : bool = true
>
> (Console.Read() = (int 'd'));;
d
val it: bool = true
> (Console.Read() = (int 'd')) && (Console.Read() = (int 'o'));;
val it: bool = false
好像没有调用Read就终止了,编译器怎么知道让表达式为假?
您必须小心使用 Read(),它还会拾取行终止符。如果您启动一个干净的 F# 交互式会话并执行以下操作,您可以看到这一点:
> Console.Read();;
d
val it : int = 100
> Console.Read();;
val it : int = 13
> Console.Read();;
val it : int = 10
显然我是在 Windows 上做的,因为线路终止是 \r\n。
您可能应该使用 ReadKey()(不能在 FSI 会话中使用)或 ReadLine()。例如,
> Console.ReadLine() = "do";;
do
val it : bool = true
>