[SWIFT] Écrivez facilement plusieurs boucles avec des fermetures rapides

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

Écrivez facilement plusieurs boucles avec des fermetures rapides
[Swift / Pour les débutants] Écrivez intelligemment avec l'inférence de type
Écrivons l'entrée / sortie de fichier Java avec NIO
Téléchargez facilement plusieurs images avec rails rails + carrierwave + cloudinary
Écrivons Javadoc