我不确定为什么以下函数无法编译:
let isWithinRange (searchElement:int, recordLength:int) =
if searchElement = recordLength then true
elif searchElement > recordLength then false
结果,我必须修改此函数才能使其编译:
let isWithinRange (searchElement:int, recordLength:int) =
let mutable withinRange = false
if searchElement = recordLength then withinRange <- true
elif searchElement > recordLength then withinRange <- false
withinRange
我不想在我的代码中引入可变性。
问题:
笔记:
我是F#的新手。因此,请原谅我这个无知的问题。
您只是错过了决赛else (value)
。if
语句的结构为if...elif
,但您需要为if...elif...else
,否则函数中至少有一个不返回值的代码路径。添加else false
到原始功能的末尾,您的代码将被编译。
此外,函数名称实际上没有任何意义。为什么将搜索元素与记录长度进行比较?为什么称这种比较isWithinRange
呢?就目前而言,您的函数(至少是编译的第二个版本)当前遵循以下逻辑:
searchElement
等于recordLength
,则返回true
。false
。可以这样写:
let isWithinRange (searchElement:int, recordLength:int) =
(searchElement = recordLength)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句