我不确定为什么以下函数无法编译:
let isWithinRange (searchElement:int, recordLength:int) =
if searchElement = recordLength then true
elif searchElement > recordLength then false
Run Code Online (Sandbox Code Playgroud)
因此,我必须修改此函数只是为了编译它:
let isWithinRange (searchElement:int, recordLength:int) =
let mutable withinRange = false
if searchElement = recordLength then withinRange <- true
elif searchElement > recordLength then withinRange <- false
withinRange
Run Code Online (Sandbox Code Playgroud)
我不想在我的代码中引入可变性.
题:
注意:
我是F#的新手.所以请原谅我这个无知的问题.
你刚刚错过决赛else (value).你的if语句的结构是if...elif,但你需要它if...elif...else,否则你的函数中至少有一个不返回值的代码路径.添加else false到原始函数的末尾,您的代码将编译.
此外,函数名称实际上没有意义.为什么要将搜索元素与记录长度进行比较?为什么这种比较被称为isWithinRange?就目前而言,您的函数(至少是第二个版本,编译)目前遵循以下逻辑:
searchElement等于recordLength,则返回true.false.这可以写得更简单:
let isWithinRange (searchElement:int, recordLength:int) =
(searchElement = recordLength)
Run Code Online (Sandbox Code Playgroud)