Lorsque j'ai essayé d'écrire facilement plusieurs boucles en C, j'ai pu définir une instruction for avec une macro comme suit. Cela se voit souvent dans de telles sources, comme dans le traitement 3D où plusieurs boucles sont fortement utilisées. Cependant, je pense qu'il est courant que vous ne puissiez pas compiler avec C90, ou que vous ne puissiez pas décrire le traitement avec des macros dans les langages actuels et jeunes tels que le swift récent.
nested_loop.c
#include <stdio.h>
#include <stdlib.h>
#define N 10
#define START_LOOP for(int i=0; i < N; i++){\
for(int j=0; j < N; j++){\
for(int k=0; k < N; k++){
#define END_LOOP }}}
int main(){
START_LOOP
printf("%d %d %d\n",i,j,k);
END_LOOP
}
Si vous écrivez ceci dans la fermeture de swift, vous pouvez le définir comme ceci.
nested_loop.swift
let N = 10;
func nested_loop(closure:(Int,Int,Int)->()){
for i in 0..<N {
for j in 0..<N{
for k in 0..<N{
closure(i,j,k)
}
}
}
}
nested_loop({(i,j,k) in
print(i,j,k)
})
nested_loop({
print($0,$1,$2)
})
Vous pourrez peut-être faire quelque chose comme l'instruction Parallel.For en C #. (Je ne l'ai jamais utilisé) Je ne suis pas sûr des langages fonctionnels, mais il peut y avoir quelque chose qui peut être vu en remplaçant le traitement conventionnel par quelque chose comme ça.
Recommended Posts