Express Python-Ertrag in JavaScript oder Java

Ich dachte darüber nach, wie ich die Ausbeute von Python in Java und JavaScript ausdrücken kann.

Dieses Mal habe ich nicht versucht, etwas Praktisches zu machen, aber ich habe darüber nachgedacht, wie ich es ersetzen kann, wenn ich einen Codegenerator machen möchte.

Vorerst habe ich versucht, dies als Thema zu verwenden.

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

Ein wenig Gedankenpolitik

Ich habe es mit dieser Richtlinie in JavaScript geschrieben.

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);
	}
})();

Ich habe es auch in Java geschrieben.

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 + "");
		}
	}
}

Beide bewegen sich vorerst.

Gibt es schon so einen Codegenerator?

In einer Zeit, in der Yield-Anweisungen normalerweise in Browsern verwendet werden können, müssen Sie nicht darüber nachdenken.

Recommended Posts

Express Python-Ertrag in JavaScript oder Java
Entfernen Sie führende und nachfolgende Leerzeichen in Python, JavaScript oder Java
So messen Sie die Verarbeitungszeit mit Python oder Java
Nehmen Sie Kontakt mit der funktionalen Programmierung in JavaScript oder Python 3 auf
Überlappende reguläre Ausdrücke in Python und Java
Unterschied in der Authentizität zwischen Python und JavaScript
4-Sprachen-Vergleich des Abschlusses (Python, JavaScript, Java, C ++)
Unterschiede zwischen Python- und Java-Syntax
Nehmen Sie die logische Summe von List in Python (Zip-Funktion)
Referenz der INI-Datei in Python oder Ruby
Scraping von Websites mit JavaScript in Python
Nicht logische Operatorverwendung von oder in Python
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
Geokodierung in Python
SendKeys in Python
Metaanalyse in Python
Unittest in Python
Über die Python-Ausbeute
Ich habe eine Klasse in Python3 und Java geschrieben
Epoche in Python
Zwietracht in Python
Deutsch in Python
DCI in Python
Quicksort in Python
nCr in Python
N-Gramm in Python
Programmieren mit Python
Plink in Python
Konstante in Python
FizzBuzz in Python
SQLite in Python
Schritt AIC in Python
LINE-Bot [0] in Python
CSV in Python
Reverse Assembler mit Python
Reflexion in Python
Konstante in Python
nCr in Python.
Format in Python
Scons in Python 3
Puyopuyo in Python
Python in Virtualenv
PPAP in Python
Quad-Tree in Python
Reflexion in Python
Chemie mit Python
Hashbar in Python
DirectLiNGAM in Python
LiNGAM in Python
In Python reduzieren
In Python flach drücken
Beispielcode für den Einstieg in den GLSL-Shader in Processing (entweder Java oder Python)
Auch mit JavaScript möchte ich Python `range ()` sehen!