[JAVA] [Introduction à MVEL] Viser à être le meilleur MVELer au monde

Remarque: nous ne pouvons garantir l'exactitude du contenu. Veuillez noter que ceci est écrit dans le but de soulager l'anxiété psychologique des débutants MVEL qui se sentent seuls en raison du manque d'informations en japonais.

Quel genre de langage est MVEL?

En termes simples, Java est un langage de script. Ce n'est pas JavaScript, c'est Script Java. J'ai osé le dire parce que c'est important.

Je pense que c'est un langage assez mineur, mais c'est en fait open source. Pour le moment, il semble que des problèmes soient régulièrement soulevés et qu'une maintenance soit également en cours.

Syntaxe de base

greet = "Hello "; //Type de chaîne
name = "MVEL"; //Type de chaîne
return greet + name; //résultat:"Hello MVEL"

--Le délimiteur de ligne est un point-virgule (;) --Type dynamique, pas besoin de déclarer le type de données variable

MVEL a la propriété de renvoyer la dernière valeur évaluée comme valeur de retour. Donc, le retour peut être omis, mais je pense que c'est plus gentil de l'ajouter pour plus de lisibilité.

opérateur

La plupart des opérateurs courants suivants peuvent être utilisés.

--Opérateurs de comparaison (== ,! =,>,> =, <, <=) --Opérateurs arithmétiques (+, -, \ *, /,%, + =, - =, * =, / =,% =) -Opérateur logique (&&、||)

D'autres incluent contient, est instanceof, ~ =.

//Déterminez si la chaîne de caractères contient "n"
"Bonjour" contains "Hmm" //Résultat: vrai

//Juger s'il s'agit d'une valeur numérique
value = "100" //Type de chaîne
value is instanceof Integer //Résultat: faux

//Juger s'il s'agit de caractères alphanumériques demi-largeur
"Hello" ~= '^[A-Za-z0-9]+$' //Résultat: vrai
opérateur La description
contains Vrai si la valeur du côté gauche contient la valeur du côté droit
is instanceof Vrai si le type de données de la variable sur le côté gauche est le type de données sur le côté droit
˜= Vrai si la valeur du côté gauche correspond à l'expression régulière du côté droit

À propos de la valeur vide (littéral nul)

hoge == null;
hoge == nil; //Synonyme de null

Dans MVEL, null et nil sont traités comme des valeurs vides. Vous pouvez utiliser l'un ou l'autre, mais il peut être plus sûr d'utiliser null pour Java.

Branche conditionnelle

//Modifier les frais d'utilisation en fonction de l'âge
if (age >= 60) {
  System.out.println("Taux d'actualisation senior: 1,200 yens");
}
else if (age >= 20) {
  System.out.println("Frais généraux: 1,800 yens");
}
else {
  System.out.println("Frais de réduction étudiants: 1,000 yens");
}

Lorsque l'expression conditionnelle est vraie, le traitement à l'intérieur de {} est exécuté. Si vous souhaitez définir plusieurs conditions, connectez-les avec else if ().

Bien qu'il s'agisse d'un petit détail, la déclaration else est écrite sur la ligne inférieure suivante avec un saut de ligne en fonction de la manière d'écrire le document officiel.

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

De cette manière, un branchement conditionnel avec l'opérateur ternaire est également possible.

Traitement itératif

Pour le traitement itératif, en plus de la syntaxe de boucle de base (for, while, until, do while, do until), vous pouvez utiliser foreach, qui est similaire à l'instruction for étendue ajoutée dans Java 1.5.

//Problème FizzBuzz
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");
  }
}

Comme i ++, l'incrément peut être utilisé sans aucun problème.

//Extraire les éléments de la liste fruits un par un et les sortir sur la console
fruits = ["pomme", "Grain de raisin", "ananas"];
count = 0;
foreach (item : fruits) {
  count++;
  System.out.println(count + ". " + item);
}

Si vous souhaitez afficher l'index avec foreach, il semble que vous deviez préparer vous-même la variable pour l'index.

Définition des fonctions

//Sortie d'une chaîne de caractères vers la console (lorsque la destination de sortie est le paramètre standard)
def hello() {
  System.out.println("Hello, world"); //Résultat: Bonjour, world
}

//Calculez l'aire du triangle et renvoyez le message
function calcTriangleArea(bottom, height) {
  area = bottom * height / 2; //Type int
  message = "Le fond est" + bottom + "La hauteur est de cm" + height + "L'aire du triangle ㎝ est" + area + "C'est ㎠."; //Type de chaîne (la variable est automatiquement de type Int=>Convertir en type chaîne)
  return message;
}

Vous pouvez utiliser def et function pour la définition de fonction de MVEL. Il n'y a pas de différence entre les deux, mais comme def est utilisé dans la documentation officielle, unissons-le à def.

En passant, quand j'ai vu la source MVEL pour la première fois, je l'ai mal interprétée comme Ruby.

Conseils pratiques

Traitons les dates

Utilisez les bibliothèques Java pour gérer les dates dans MVEL. Il y a Date et Calendrier dans la bibliothèque de dates, mais cette fois, nous utiliserons Calendrier car nous voulons effectuer un traitement arithmétique de date et d'heure.

import java.util.Calendar; //Importer la classe de calendrier

//Créer une instance de calendrier
Calendar calendar = Calendar.getInstance();
today = calendar.getTime(); //Obtenez la date et l'heure actuelles

calendar.set(2020, 4, 23, 23, 59, 59); //Définir la date de fin de la vente (23 avril 2020 23:59:59)
endOfSaleDay = calendar.getTime();

if (today >= endOfSaleDay) {
  System.out.println("20%La vente OFF est terminée.");
}

Ce qui précède est le processus pour déterminer si la vente à rabais est terminée. Étant donné que le paramètre de date de fin de vente est un changement destructeur, si vous obtenez ensuite getTime (), ce sera la date et l'heure actuelles à la date et à l'heure définies.

Définition de MVELer

Qu'est-ce que MVELer en premier lieu! Je voudrais donc le définir comme la responsabilité de la déclaration. Cela dit, cela ressemble à PHPer pour les utilisateurs PHP et Rubyist pour les utilisateurs Ruby, mais à proprement parler, cela fait référence aux utilisateurs MVEL qui remplissent les conditions suivantes.

Les utilisateurs de MVEL qui peuvent répondre à ces exigences doivent être prêts à devenir ** MVELer ** et être fiers de s'appeler MVELer.

Résumé

référence

Recommended Posts

[Introduction à MVEL] Viser à être le meilleur MVELer au monde
Comprendre les caractéristiques de Scala en 5 minutes (Introduction à Scala)
Introduction à Rakefile qui peut être effectuée en 10 minutes environ
[Rails] Où faire attention dans la description de la validation
Juger si les chaînes de caractères à comparer sont les mêmes en Java
À propos de la langue à apprendre à partir de maintenant
Passer les paramètres régionaux i18n à JavaScript
Introduction aux algorithmes avec somme cumulée Java
Meilleurs produits de jeu à acheter en 2021
Raison pour ajouter L au nombre à mettre en type long Java
Introduction au développement du mod Slay the Spire (1) Introduction
Introduction à Java pour la première fois # 2
Bonjour tout le monde!
Comment obtenir la date avec Java
Introduction à Ratpack (3) - Explication détaillée de Hello World
Sortie du livre "Introduction à Java"
Passez simplement Masakari aux "langages de programmation qui seront nécessaires à l'avenir"
Résumer le cycle de vie des objets Java à prendre en compte dans le développement Android