Rendement Python express en JavaScript ou Java

J'ai réfléchi à la façon d'exprimer le rendement de Python en Java et JavaScript.

Cette fois, je n'ai pas essayé de faire quelque chose de pratique, mais j'ai réfléchi à comment le remplacer si je voulais faire un générateur de code.

Pour le moment, j'ai essayé de l'utiliser comme sujet.

http://ideone.com/PG6xOJ

# your code goes here
def Generator(n):
	yield 1;
	
	idx = 0
	while idx < n:
		yield 2
		idx += 1

	yield 3
	
g = Generator(5)
for x in g:
	print x

Un peu de politique de réflexion

Je l'ai écrit en JavaScript avec cette politique.

http://ideone.com/24L64n

// your code goes here
function Generator(n) {
	var ctx = { state:0, idx:0 };

	return function() {
		while (1) {
			switch (ctx.state) {
				case 0:
					ctx.state = 1;
					return 1;
				
				case 1:
					if (ctx.idx < n) {
						ctx.idx++;
						return 2;
					}

					ctx.state = 2;
					break;
					
				case 2:
					ctx.state = -1;
					return 3;
				
				default:
					return undefined;
			}
		}
	};
}

(function() {
	var g = Generator(5);
	while (1) {
		var x = g();
		if (x === undefined)
			break;
		print(x);
	}
})();

Je l'ai également écrit en Java.

http://ideone.com/YnxHkv

/* package whatever; // don't place package name! */

import java.util.*;
import java.lang.*;
import java.io.*;

/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
	private static class Generator {
		final int n_;
		int state_ = 0, idx_ = 0;
		boolean completed_ = false;
		
		Generator(int n) {
			n_ = n;
		}
		
		int generate() {
			while (true) switch (state_) {
				case 0:
					state_ = 1; return 1;
					
				case 1:
					if (idx_ < n_) {
						idx_++;
						return 2;
					}
					else {
						state_ = 2;
					}
					break;
					
				case 2:
					completed_ = true;
					return 3;
			}
		}
		
		boolean isCompleted() { return completed_; }
	}

	public static void main (String[] args) throws java.lang.Exception
	{
		Generator g = new Generator(5);
		while (! g.isCompleted()) {
			int x = g.generate();
			System.out.println(x + "");
		}
	}
}

Les deux bougent pour le moment.

Existe-t-il déjà un tel générateur de code?

À une époque où les instructions yield peuvent être utilisées normalement dans les navigateurs, vous n'avez pas à y penser.

Recommended Posts

Rendement Python express en JavaScript ou Java
Supprimez les espaces de début et de fin en Python, JavaScript ou Java
Comment mesurer le temps de traitement avec Python ou Java
Entrez en contact avec la programmation fonctionnelle en JavaScript ou Python 3
Chevauchement d'expressions régulières en Python et Java
Différence d'authenticité entre Python et JavaScript
4 langage de comparaison de fermeture (Python, JavaScript, Java, C ++)
Différences entre la syntaxe Python et Java
Prenez la somme logique de List en Python (fonction zip)
Référence du fichier INI en Python ou Ruby
Scraping de sites Web à l'aide de JavaScript en Python
Utilisation d'opérateurs non logiques de ou en python
Quadtree en Python --2
Python en optimisation
CURL en Python
Métaprogrammation avec Python
Python 3.3 avec Anaconda
Géocodage en python
SendKeys en Python
Méta-analyse en Python
Unittest en Python
À propos du rendement Python
J'ai écrit une classe en Python3 et Java
Époque en Python
Discord en Python
Allemand en Python
DCI en Python
tri rapide en python
nCr en python
N-Gram en Python
Programmation avec Python
Plink en Python
Constante en Python
FizzBuzz en Python
Sqlite en Python
Étape AIC en Python
LINE-Bot [0] en Python
CSV en Python
Assemblage inversé avec Python
Réflexion en Python
Constante en Python
nCr en Python.
format en python
Scons en Python 3
Puyopuyo en python
python dans virtualenv
PPAP en Python
Quad-tree en Python
Réflexion en Python
Chimie avec Python
Hashable en Python
DirectLiNGAM en Python
LiNGAM en Python
Aplatir en Python
Aplatir en python
Exemple de code pour démarrer avec le shader GLSL en traitement (Java ou Python)
Même avec JavaScript, je veux voir Python `range ()`!