Hola amigos, tengo el siguiente fragmento de código de C++.C++ a F # traducción suave
for (int i=0; i < nObstacles; i++)
{
int x,y;
bool bAlreadyExists;
do {
x = rand() % nGridWidth;
y = rand() % nGridHeight;
} while (HasObstacle(x, y));
SetObstacle(x, y, true);
}
Puedo traducirlo a F # directamente sin ningún problema.
let R = new System.Random()
for i=0 to nObstacles do
let mutable bGoodToGo = false;
let mutable x =0;
let mutable y = 0
while not bGoodToGo do
x <-R.Next(nWidth)
y <-R.Next(nHeight)
bGoodToGo <- IsEmptyAt x y
board.[x,y]<-Obstacle;
Por supuesto, esto probablemente hace que la mayoría de ustedes se avergüence, ya que esta no es la forma en que F # debía usarse. Este código tiene algunos conceptos "unkosher" para F #, como bucles do-while y datos mutables.
Pero lo que me gustaría ver es una traducción "correcta" de F # con datos inmutables, y algún tipo de equivalente de do-while.
Creo que su primera solución es interesante. Me hace pensar "fuera de la caja" Probablemente no haya necesidad de inmutabilidad al 100% aquí, ya que el tipo de junta TIENE que ser mutable de todos modos, solo esperaba evitar la mutabilidad de (x, y) – user627943