Les ingénieurs Java comparés pour apprendre la grammaire de base de Ruby maintenant Partie 1 (Basique, Variables)

introduction

Je pense que si vous apprenez une langue avec une idée différente, elle sera plus rapide à apprendre par différence, donc avant de commencer Rails, refaisons la grammaire de base. C'est une idée facile à retenir en créant quelque chose comme une feuille de triche.

Je pense qu'il y a plusieurs pénuries, mais comprenez bien que je ne fais que ce que je pense être nécessaire pour le moment. Puisque j'écris souvent, je diviserai l'article.

Tsukkomi est le bienvenu.

environnement

paiza.io C'est plus facile à exécuter dans un tel cas

La version à laquelle cela a été fait est la suivante. Vous pouvez vérifier la version depuis Aide.

Ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux] Java openjdk version "12" 2019-03-19

commentaire

Comment rédiger un commentaire

//Pour une ligne

/*
Pour plusieurs lignes
*/
#Pour une ligne

=begin
Pour plusieurs lignes
=end

__END__
Tout après cette ligne sera un commentaire

Délimiteur de traitement

Il s'agit du délimiteur lors de l'exécution.

String str = "World"; //Le traitement est séparé uniquement par un point-virgule
tmp1 = 1 #Fondamentalement, les sauts de ligne sont séparés
tmp2 = 2;print("#{tmp1 + tmp2}") #Le point-virgule est également valide comme délimiteur

Sortie standard

Hello World D'abord de Hello World. Java a beaucoup de types car vous devez créer des classes. Puisque Ruby peut écrire le traitement soudainement, la quantité de frappe est faible.

import java.util.*;

public class Main {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}

#Il semble y avoir plusieurs noms, veuillez donc vous référer à ce qui suit
# https://qiita.com/naoge/items/f5d84581d3a301a9c22f
print("Hello World")

Expansion variable

Vous verrez souvent des variables. En Java, il est développé en déclarant un spécificateur de format avec la méthode printf et en définissant une variable. L'expansion variable peut être utilisée dans Ruby, donc je vais le faire.

import java.util.*;

public class Main {
    public static void main(String[] args) {
        String str = "World";
        // System.out.println("Hello" + str)Mais c'est possible.
        System.out.printf("Hello %s", str);
    }
}

str = "World";
print("Hello #{str}") #{formule(variable)}でvariable展開可能

Définition variable

Nous avons utilisé quelques variables ci-dessus, mais en voici une description. Étant donné que les variables Ruby sont un peu compliquées, il semble difficile de traiter la portée ici, donc je ne l'ai pas vu. Veuillez noter qu'en raison de cette influence, toutes les variables de Ruby ne peuvent pas être couvertes.

Variables locales

Puisque Java est un langage de type statique, vous devez déclarer le type de la variable. Puisque Ruby est un langage à typage dynamique, vous n'avez pas besoin de spécifier de type. En tant que règle Ruby, les variables locales sont des identificateurs qui commencent par une lettre inférieure ou un trait de soulignement. Il semble que le trait de soulignement concerne les variables qui ne sont pas utilisées, alors faites attention à cela.

String tmp1 = "1";
tmp1 = "1"

Ruby permet d'inclure des variables de différents types dans des variables une fois déclarées.

tmp1 = 1

puts("#{tmp1}") #met est une sortie standard avec des sauts de ligne

tmp1 = "2"

puts("#{tmp1}")

constant

Java déclare avec final pour empêcher la réécriture. En règle générale, il est normal d'ajouter de la statique, alors ajoutez également de la statique. Puisque Ruby définit des variables commençant par une majuscule anglaise comme constantes, elle n'est jugée que par le nom de la variable.

public static final String ONE = "1";
ONE = "1"

__END__
Si vous réécrivez cette variable, l'avertissement suivant se produira et le programme ne fonctionnera pas.

warning: already initialized constant ONE

Contrairement à Java, les constantes Ruby peuvent également être définies au niveau supérieur. Et il est possible d'avoir une constante avec le même nom dans la classe. Dans ce cas, la priorité diminuera à mesure que vous passerez du lieu d'utilisation à l'extérieur.

ONE = "1"

class A
   ONE = "2"
   
   def print
       p ONE
   end
end

a = A.new
a.print #Ceci est affiché comme 2

p ONE #Ceci est affiché comme 1

Variables globales

Java n'a pas de variables globales au sens strict. Puisque tout doit appartenir à Ojbect, vous pouvez créer une variable qui ressemble à un tout, mais ce n'est pas une variable globale.

Ruby peut être déclaré comme une variable globale en le préfixant avec $. Vous pouvez également faire référence à des variables globales non déclarées, mais elles seront «nil».

$str = "a"

Variable d'instance

À partir de là, la complexité des variables Ruby apparaît. Je comprends que les variables d'instance sont similaires aux variables membres en Java. Reconnaissance qu'il est traité de la même manière que protégé en termes de portée!

Ruby déclare les variables avec «@» au début. Contrairement à Java, il n'est pas déclaré en tant que variable membre et la plage de référence est large (s'il s'agit d'une variable d'instance de classe), donc si vous compliquez la classe, vous ne saurez pas où quelque chose se passe, donc je me sens prudent. Je pense que c'est la bonne façon de garder la classe simple au lieu de ne pas l'utiliser, alors soyez prudent.

De plus, dans le cas de Ruby, la référence de la méthode de classe (self) et de la méthode d'instance (sans self) est différente. Puisque le moi ressemble à une méthode statique, j'essaie de comprendre cela.

public class A {
    protected String str;
}
class A
  def save(target)
    @str = target;
  end
end

Variable de classe

Une variable qui appartient à une classe. Il semble être traité comme statique en Java et affecte d'autres instances de classe.

Il est plus sûr de ne pas l'utiliser. Cela semble seulement être la cause du chaos.

public class A {
    protected static String str;
}
class A
  def save(target)
    @@str = target;
  end
end

Variable d'instance de classe

Si vous déclarez qu'une variable d'instance appartient à une classe, elle devient une variable d'instance de classe et ne peut être référencée qu'à partir de la méthode de classe (self). La différence avec les variables d'instance semble être qu'elles ne portent que sur leurs méthodes de classe. Si vous essayez de le voir des autres, il sera traité comme une variable d'instance.

Il semble que ce ne soit pas possible avec Java, il semble donc que vous devez vous rappeler que vous pouvez également le faire.

# Your code here!
class A

  def save(user_name)
    @str = user_name
  end
    
  def self.save(user_name)
      @str = user_name
  end

  def self.print
    p @str
  end

  def print
    p @str
  end
end

a = A.new
a.save("aaa")
a.print

A.save("bbb")
A.print

Recommended Posts

Les ingénieurs Java comparés pour apprendre la grammaire de base de Ruby maintenant Partie 1 (Basique, Variables)
Les ingénieurs Java comparent maintenant pour apprendre la grammaire de base de Ruby Part 2 (classes, méthodes)
J'ai brièvement résumé la grammaire de base de Ruby
Assurez-vous de comparer le résultat Java compareTo avec 0
Java pour apprendre avec les ramen [Partie 1]
Utilisation de base de Java Facultatif Partie 1
[Connaissance de base de Java] Portée des variables
[Ruby] Afficher le contenu des variables
Connexion à une base de données avec Java (partie 1) Peut-être la méthode de base
Comparer les éléments d'un tableau (Java)
[Java] J'ai personnellement résumé la grammaire de base.
Sortie du livre "Introduction à Java"
J'ai essayé de traduire la grammaire de R et Java [Mis à jour de temps en temps]
[Ruby on Rails] Comment faire de la destination du lien une partie de l'ID spécifié
[Promotion de la compréhension de Ruby (1)] Lorsque vous passez de Java à Ruby, commencez par comprendre la différence.
J'ai essayé de comparer la technologie d'infrastructure des ingénieurs ces jours-ci avec la cuisine.
Comment trouver la cause de l'erreur Ruby
[Ruby] Connaissance de base des variables d'instance de classe, etc.
L'histoire de l'introduction de la communication Ajax à Ruby
[Java] La partie déroutante de String et StringBuilder
[Ruby] Code pour afficher le jour
Java Bienvenue dans le marais des tableaux bidimensionnels
Grammaire de base Java
Grammaire Java de base
Grammaire de base Java
Grammaire de base Java
La partie à laquelle j'étais accro dans "Introduction à Ajax dans les applications Web Java" de NetBeans
[Java] Comment obtenir l'URL de la source de transition
[Java] Résumé de base de Java non couvert par Progate ~ Partie 1 ~
Comment écrire Scala du point de vue de Java
[Java] Comment obtenir la valeur maximale de HashMap
Revue Java ① (étapes de développement, grammaire de base, variables, types de données)
Introduction à Java pour les débutants Connaissance de base du langage Java ①
Java: utilisez Stream pour trier le contenu d'une collection
~ J'ai essayé d'apprendre la programmation fonctionnelle avec Java maintenant ~
Ce dont les ingénieurs Java ont besoin pour se préparer à la version Java 11
Remplacez seulement une partie de l'hôte URL par java
De Java à Ruby !!
L'histoire de la montée de Spring Boot de la série 1.5 à la série 2.1 part2
Passez en revue les connaissances de base du rubis souvent oubliées
J'ai essayé de résumer les bases de kotlin et java
Accédez à l'abréviation à partir de 5 exemples de listes Java en italique
20190803_Java & k8s sur Azure L'histoire d'aller au festival
Commande pour vérifier le nombre et l'état des threads Java
Comparaison de l'écriture des fonctions de rappel (Java, JavaScript, Ruby)
Je souhaite utiliser l'API Java 8 DateTime lentement (maintenant)
[Java] Pour connaître les informations de type des paramètres de type à l'exécution
[Java] Résumé de base de Java non couvert par Progate ~ Partie 2 ・ Liste ~
[Ruby] Comment récupérer le contenu du double hachage
Comment dériver le dernier jour du mois en Java
Road to Java Engineer Part2 Quel type de langage est Java?
L'histoire de la transmission de Java à Heroku à l'aide du pipeline BitBucket