[JAVA] [Einführung in MVEL] Mit dem Ziel, der beste MVELer der Welt zu sein

Hinweis: Wir können die Richtigkeit des Inhalts nicht garantieren. Bitte beachten Sie, dass dies mit der Absicht geschrieben wurde, die psychische Angst von MVEL-Anfängern zu lindern, die sich aufgrund fehlender Informationen auf Japanisch einsam fühlen.

Was für eine Sprache ist MVEL?

Einfach ausgedrückt ist Java eine Skriptsprache. Es ist kein JavaScript, es ist Script Java. Ich habe es gewagt, es zu sagen, weil es wichtig ist.

Ich denke, es ist eine ziemlich kleine Sprache, aber es ist tatsächlich Open Source. Derzeit werden anscheinend regelmäßig Probleme angesprochen und auch Wartungsarbeiten durchgeführt.

Grundlegende Syntax

greet = "Hello "; //Zeichenfolgentyp
name = "MVEL"; //Zeichenfolgentyp
return greet + name; //Ergebnis:"Hello MVEL"

--Der Zeilenbegrenzer ist ein Semikolon (;) --Dynamischer Typ, variabler Datentyp muss nicht deklariert werden

MVEL hat die Eigenschaft, den zuletzt ausgewerteten Wert als Rückgabewert zurückzugeben. Die Rückgabe kann also weggelassen werden, aber ich denke, es ist freundlicher, sie zur besseren Lesbarkeit hinzuzufügen.

Operator

Die meisten der folgenden allgemeinen Operatoren können verwendet werden.

--Vergleichsoperatoren (==,! =,>,> =, <, <=) --Arithmetische Operatoren (+, -, \ *, /,%, + =, - =, * =, / =,% =) -Logischer Operator (&&、||)

Andere enthalten enthält, ist Instanz von, ~ =.

//Stellen Sie fest, ob die Zeichenfolge "n" enthält.
"Hallo" contains "Hmm" //Ergebnis: wahr

//Beurteilung, ob es sich um einen numerischen Wert handelt
value = "100" //Zeichenfolgentyp
value is instanceof Integer //Ergebnis: falsch

//Beurteilung, ob es sich um alphanumerische Zeichen halber Breite handelt
"Hello" ~= '^[A-Za-z0-9]+$' //Ergebnis: wahr
Operator Erläuterung
contains True, wenn der Wert auf der linken Seite den Wert auf der rechten Seite enthält
is instanceof True, wenn der Datentyp der Variablen auf der linken Seite der Datentyp auf der rechten Seite ist
˜= True, wenn der Wert auf der linken Seite mit dem regulären Ausdruck auf der rechten Seite übereinstimmt

Über leeren Wert (Nullliteral)

hoge == null;
hoge == nil; //Synonym für null

In MVEL werden null und nil als leere Werte behandelt. Sie können beide verwenden, aber es ist möglicherweise sicherer, null für Java zu verwenden.

Bedingte Verzweigung

//Nutzungsgebühr je nach Alter ändern
if (age >= 60) {
  System.out.println("Senior Diskontsatz: 1,200 Yen");
}
else if (age >= 20) {
  System.out.println("Allgemeine Gebühr: 1,800 Yen");
}
else {
  System.out.println("Studentenrabattgebühr: 1,000 Yen");
}

Wenn der bedingte Ausdruck wahr ist, wird die Verarbeitung in {} ausgeführt. Wenn Sie mehrere Bedingungen festlegen möchten, verbinden Sie sie mit else if ().

Obwohl es sich um ein kleines Detail handelt, wird die else-Anweisung in der nächstniedrigeren Zeile mit einem Zeilenumbruch entsprechend der Schreibweise des offiziellen Dokuments geschrieben.

age >= 15 ? "Yes" : "No";

Auf diese Weise ist auch eine bedingte Verzweigung mit dem ternären Operator möglich.

Iterative Verarbeitung

Für die iterative Verarbeitung können Sie zusätzlich zur grundlegenden Schleifensyntax (für, während, bis, während, bis) do foreach verwenden, ähnlich der in Java 1.5 hinzugefügten erweiterten for-Anweisung.

//FizzBuzz Problem
for (i = 0; i < 100; i++) {
  if (i % 15 == 0) {
    System.out.println("FizzBuzz");
  }
  else if (i % 3 == 0) {
    System.out.println("Fizz");
  }
  else if (i % 5 == 0) {
    System.out.println("Buzz");
  }
}

Inkrement kann wie i ++ problemlos verwendet werden.

//Extrahieren Sie Elemente von Listenfrüchten nacheinander und geben Sie sie an die Konsole aus
fruits = ["Apfel", "Traube", "Ananas"];
count = 0;
foreach (item : fruits) {
  count++;
  System.out.println(count + ". " + item);
}

Wenn Sie den Index mit foreach anzeigen möchten, müssen Sie die Variable anscheinend selbst für den Index vorbereiten.

Funktionsdefinition

//Geben Sie eine Zeichenfolge an die Konsole aus (wenn das Ausgabeziel die Standardeinstellung ist).
def hello() {
  System.out.println("Hello, world"); //Ergebnis: Hallo, world
}

//Berechnen Sie die Fläche des Dreiecks und geben Sie die Nachricht zurück
function calcTriangleArea(bottom, height) {
  area = bottom * height / 2; //Int-Typ
  message = "Der Boden ist" + bottom + "Die Höhe beträgt cm" + height + "Die Fläche des ㎝-Dreiecks beträgt" + area + "Es ist ㎠."; //Zeichenfolgentyp (Variable ist automatisch Int-Typ=>In String-Typ konvertieren)
  return message;
}

Sie können def und function für die Funktionsdefinition von MVEL verwenden. Es gibt keinen Unterschied zwischen den beiden, aber da def in der offiziellen Dokumentation verwendet wird, sollten wir es zu def vereinheitlichen.

Nebenbei bemerkt, als ich die MVEL-Quelle zum ersten Mal sah, habe ich sie als Ruby missverstanden.

Praktische Tipps

Beschäftigen wir uns mit Daten

Verwenden Sie Java-Bibliotheken, um Datumsangaben in MVEL zu verarbeiten. Es gibt Datum und Kalender in der Datumsbibliothek, aber dieses Mal verwenden wir Kalender, weil wir die arithmetische Verarbeitung von Datum und Uhrzeit durchführen möchten.

import java.util.Calendar; //Kalenderklasse importieren

//Erstellen Sie eine Kalenderinstanz
Calendar calendar = Calendar.getInstance();
today = calendar.getTime(); //Holen Sie sich das aktuelle Datum und die Uhrzeit

calendar.set(2020, 4, 23, 23, 59, 59); //Verkaufsenddatum festlegen (23. April 2020, 23:59:59 Uhr)
endOfSaleDay = calendar.getTime();

if (today >= endOfSaleDay) {
  System.out.println("20%Der AUS-Verkauf ist beendet.");
}

Mit dem oben genannten Verfahren wird festgestellt, ob der Rabattverkauf beendet wurde. Da die Einstellung des Verkaufsenddatums eine destruktive Änderung darstellt, wird bei getTime () das aktuelle Datum und die aktuelle Uhrzeit zum festgelegten Datum und zur festgelegten Uhrzeit angezeigt.

Definition von MVELer

Was ist MVELer überhaupt? Deshalb möchte ich es als die Verantwortung der Erklärung definieren. Das heißt, es fühlt sich an wie PHPer für PHP-Benutzer und Rubyist für Ruby-Benutzer, aber genau genommen bezieht es sich auf MVEL-Benutzer, die die folgenden Bedingungen erfüllen.

Wenn Sie ein MVEL-Benutzer sind, der diese Anforderungen erfüllen kann, seien Sie bereit, ein ** MVELer ** zu sein, und seien Sie stolz darauf, sich selbst als MVELer zu bezeichnen.

Zusammenfassung

Referenz

Recommended Posts

[Einführung in MVEL] Mit dem Ziel, der beste MVELer der Welt zu sein
Verstehen Sie die Eigenschaften von Scala in 5 Minuten (Einführung in Scala)
Einführung in Rakefile, die in ca. 10 Minuten durchgeführt werden kann
[Rails] Bei der Beschreibung der Validierung ist Vorsicht geboten
Beurteilen Sie, ob die zu vergleichenden Zeichenfolgen in Java identisch sind
Über die Sprache, die von nun an zu lernen ist
Übergeben Sie das Gebietsschema i18n an JavaScript
Einführung in Algorithmen mit Java-kumulativer Summe
Beste Gaming-Produkte zum Kaufen im Jahr 2021
Grund, L zu der Zahl hinzuzufügen, die in den langen Java-Typ eingegeben werden soll
Einführung in Slay the Spire Mod Development (1) Einführung
Einführung in Java zum ersten Mal # 2
Hallo Welt! Im Bootstrap Loader Bereich
So erhalten Sie das Datum mit Java
Einführung in Ratpack (3) - Hallo Welt, detaillierte Erklärung
Ausgabe des Buches "Einführung in Java"
Überspringen Sie Masakari einfach zu "Programmiersprachen, die in Zukunft benötigt werden".
Fassen Sie den Lebenszyklus von Java-Objekten zusammen, die bei der Android-Entwicklung berücksichtigt werden müssen