我对F#是全新的(今天开始使用它),并且对函数式编程(我对Lisp有一点经验)相对较新。我想通过在满足某个条件时返回一个值来退出函数,以便不执行循环的其余部分。这里是什么,我想要做一个C#图解:返回值打破功能
bool CheckRow (int n, int i)
{
for(int j = 0; j < 9; j++)
if (n == sudoku[i][j])
return false;
return true;
}
我试图实现在F#相同功能的这样的(数独是一种array2D):
let CheckRow (n : int) (i : int) : bool =
for j = 0 to 8 do
if (n = sudoku.[i, j]) then
false
true
不过,我得到以下错误在if中为false:“这个表达式预计有单位类型,但是这里的类型是bool”。从F#函数中“返回”的正确方法是什么?
的可能的复制[F#返回函数布尔值(http://stackoverflow.com/questions/19195346/f-returns-boolean-value-in-function) –
我会在这里假设你并没有以一种惯用的方式来做这件事,我想你可以使用seq类型来帮助你,并且以更有效的方式来做它 –
如果你认为你需要从F#函数中“提早退出”,那通常就是你在思考错误的线索。在这里,您想查看该行是否有满足特定条件的任何值。这就是Array.exists函数的作用。 (或者'List.exists',或者'Seq.exists' - 见Bartek Kobylecki的回答)。 – rmunn