Premiers pas avec Ruby pour les ingénieurs Java

Jour 17 du Calendrier de l'Avent Dip :)

introduction

Quel genre d'article?

Les ingénieurs Java ont commencé à écrire Ruby C'est un article qui partage ce que je pensais, "** Est-ce quelque chose comme Java! **".

Cette fois, j'écrirai sur le "codage" ...!

table des matières

Classe Instanciation (#instantization) [Méthode](# méthode) [Instanciation (avec arguments)](# Instantification (avec arguments)) [Array / List](# Sequence List) [Map / Hash](#map Hash) [Ce qu'il était utile de savoir](# Ce qu'il était utile de savoir) Conclusion

classe

Java

Father.java


//Package par défaut
public class Father {
}

Ruby

father.rb


class Father
end

Instanciation

Java

Main.java


//Package par défaut
public class Main {

    public static void main(String[] args) {
        Father father = new Father(); 
    }

}

Ruby

main.rb


require './father.rb' # ./father.Lisez rb. Similaire à l'importation en java.

father = Father.new

Méthode

Java

Déclaration

Father.java


public class Father {

    //méthode statique
    public static void hello() {
        System.out.println("Hello...");
    }

    //Méthode non statique (méthode d'instance)
    public void tellTheTruth() {
        System.out.println("I am your father.");
    }

    //Méthode non statique (méthode d'instance):Avec argument
    public void fuga(String words) {
        System.out.println(words);
    }

}

appel

Main.java


public class Main {

    public static void main(String[] args) {
        Father.hello(); // Hello...
        Father father = new Father(); 
        father.tellTheTruth(); // I am your father.
        father.fuga("Nooo!!"); // Nooo!!
    }

}

Ruby

Déclaration

father.rb


class Father
  #Méthode de classe
  def self.hello
    puts 'Hello...'
  end

  #Méthode d'instance (sans argument)
  # snake_notation de cas
  def tell_the_truth
    puts 'I am your father.'
  end

  #Méthode d'instance (avec arguments)
  def fuga(words)
    puts words
  end
end

appel

main.rb


require './father.rb'

Father.hello # hoge

father = Father.new

father.tell_the_truth() # I am your father.
father.tell_the_truth   # I am your father. ()Peut être omis. Cela ressemble à un appel de membre, mais c'est un appel de méthode.

father.fuga('nooooo!!') # nooooo!!
father.fuga 'nooooo!!'  # nooooo!! ()Peut être omis. Elle est souvent utilisée, mais elle est difficile à comprendre du côté droit de la méthode, il vaut donc mieux l'éviter.

Instanciation (avec arguments)

Dans l'instanciation ci-dessus, c'était un constructeur sans arguments, mais cette fois, nous le rendrons plus semblable à un objet avec un constructeur avec des arguments. Java

Father.java


public class Father {

    private String name;

    public Father(String name) {
        this.name = name;
    }

    public void tellTheTruth() {
        System.out.println("I am " + name + "...");
    }

}

Ruby

father.rb


class Father
  attr_accessor :name

  def initialize(name)
    @name = name
  end

  def tell_the_truth
    puts "I am #{name}..."
  end
end

ʻInitialize` est ce que l'on appelle le constructeur. De plus, «@ hoge» représente une variable d'instance. En Java, on l'appelle souvent un «champ» ou une «variable membre».

À propos des chaînes de caractères

attr_accessor / À propos des accesseurs

ʻAttr_accessor `définit un accesseur (appelé getter / setter). En fait, c'est la même chose que d'écrire le code suivant.

def name
  @name 
end

def name=(val)
  @name = val
end

Identique à Java ci-dessous.

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

Liste des tableaux

Java

Main.java


package com.company;

import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<String> words = Arrays.asList("pen", "pineapple", "apple", "pen");

        // java5-7
        for (String word : words) {
            System.out.println(word);
        }
        //java8 ou version ultérieure
        words.forEach(System.out::println);
    }
}

Ruby

ppap.rb


words = ['pen', 'pineapple', 'apple', 'pen']

puts words[0] # pen

words.each do |word|
  #Le traitement suivant est exécuté en boucle.
  #L'objet en boucle est stocké dans Word.
  #Donc, la première boucle est'pen'Est affiché sur la console.
  puts word
end

Les tableaux sont représentés par la classe Array. Array --Ruby Reference

«# Each» est souvent utilisé pour répéter un tableau. Il y a aussi une instruction for, mais si vous vous souvenez d'abord de # each, la plupart des boucles conviendront.

L'article suivant est très facile à comprendre sur le bloc représenté par do to ʻend`.

Comprendre comment utiliser les blocs [Ruby] et Proc (Cela peut prêter à confusion, il est donc préférable de le stocker et de le lire plus tard.)

De plus, si vous gardez à l'esprit que la séquence de chaînes de caractères est générée par la méthode d'écriture suivante, Vous serez moins susceptible d'être ravi de lire du code écrit par d'autres.

#Générer un tableau de chaînes
words = %w(pen pineapple apple pen)

Utiliser la notation% (notation pour cent) en Ruby est très utile à cet égard. (Stock recommandé)

Carte / hachage

Java

Main.java


import java.util.HashMap;
import java.util.Map;

public class Main {

    public static void main(String[] args) {
        Map<String, String> map = new HashMap<>();

        map.put("name", "Tremper");
        map.put("service", "Tarako chez l'infirmière");

        System.out.println(map.get("name")); //Tremper
        System.out.println(map.get("service")); //Tarako chez l'infirmière
    }

}

Ruby Il existe plusieurs façons d'écrire des hachages dans Ruby.

main.rb


#1 corde comme clé
dip = {'name' => 'Tremper', 'service' => 'Tarako chez l'infirmière'}

puts dip['name'] #Tremper
puts dip['service'] #Tarako chez l'infirmière

#2 Utilisez le symbole comme clé.
dip = {name: 'Tremper', service: 'Tarako chez l'infirmière'}

puts dip[:name] #Tremper
puts dip[:service] #Tarako chez l'infirmière

La méthode d'écriture n'est pas limitée à ce qui précède et la prise en charge diffère selon la version. Les articles suivants sont très faciles à comprendre et doivent être lus. Diverses méthodes de déclaration de hachage pour Ruby

Ce qu'il était utile de savoir

À propos de l'espace de noms (à propos de Foo :: Bar.new)

Vous pouvez être dérouté par le style d'écriture suivant.

Foo::Bar.new

C'est le processus qui instancie en fait les classes suivantes.

module Foo
  class Bar
  end
end

L'un des rôles du module est de fournir ** l'espace de noms **. (Autres fonctions telles que la fourniture de méthodes.) C'est un concept similaire à un package en Java.

Bar.java


package foo;

public class Bar {
}

Fuga.java


package hoge;

import foo.Bar;

public class Fuga {
    Bar bar = new Bar();
}

Similaire à ce qui précède.

NoMethodError se produit au lieu de NullPointerException

Ruby «nil» est similaire à celui de Java, mais un peu différent.

nil est la seule instance de la classe NilClass. nil représente faux avec l'objet faux et tous les autres objets sont vrais. class NilClass (Ruby 2.3.0)

Par conséquent, lorsque vous appelez une méthode qui n'existe pas dans la classe nil, Vous obtiendrez une exception appelée NoMethodError au lieu d'une exception comme NullPointerException.

main.rb


#Appelez une méthode non définie.
nil.special_method 
#Spécial pour la classe Nil_Puisqu'il n'y a aucune méthode, l'erreur suivante est sortie.
undefined method `special_method' for nil:NilClass (NoMethodError)

en conclusion

Je pense personnellement que Ruby a une belle grammaire, des classes intégrées pratiques, et plus vous l'utilisez, plus cela devient familier. Si vous entrez depuis Java, vous obtiendrez peut-être quelque chose comme "** Je m'inquiète pour quelque chose sans déclaration de type !! **", mais je pense que vous vous y habituerez bientôt. (Je m'y suis habitué en 3 jours.) Si vous commencez une autre langue, votre vision de la langue d'origine changera, alors pourquoi ne pas la démarrer?

Recommended Posts

Premiers pas avec Ruby pour les ingénieurs Java
Premiers pas avec Ruby
Premiers pas avec Java Collection
Liens et mémos pour démarrer avec Java (pour moi-même)
Premiers pas avec les bases de Java
Premiers pas avec les modules Ruby
Premiers pas avec les anciens ingénieurs Java (Stream + Lambda)
Premiers pas avec Docker pour Mac (installation)
Introduction à Java à partir de 0 Partie 1
Premiers pas avec DBUnit
Premiers pas avec Swift
Premiers pas avec Doma-Transactions
Premiers pas avec Java 1 Assembler des éléments similaires
Premiers pas avec Kotlin à envoyer aux développeurs Java
Premiers pas avec le traitement Doma-Annotation
Prise en main des programmes Java à l'aide de Visual Studio Code
Exercices de programmation Java pour les nouveaux arrivants impopulaires auprès des ingénieurs actifs
Premiers pas avec JSP et servlet
Premiers pas avec Spring Boot
Premiers pas avec Java et création d'un éditeur Ascii Doc avec JavaFX
Premiers pas avec Java_Chapitre 5_Exercices pratiques 5_4
Méthode de commodité Ruby pour les jeunes ingénieurs
Activez OpenCV avec java8. (Pour moi-même)
[Google Cloud] Premiers pas avec Docker
Premiers pas avec Docker avec VS Code
Revenir au début, démarrer avec Java ② Instructions de contrôle, instructions de boucle
Premiers pas avec Doma-Criteria API Cheet Sheet
Apprenez de «Et alors», les bases de Java [pour les débutants]
Introduction au test de paramétrage dans JUnit
Premiers pas avec Ratpack (4) - Routage et contenu statique
Démarrez avec le fonctionnement de JVM GC
Conseils d'interopérabilité avec Kotlin à envoyer aux développeurs Java
Premiers pas avec Language Server Protocol avec LSP4J
Premiers pas avec la création d'ensembles de ressources avec ListResoueceBundle
Premiers pas avec le Machine Learning avec Spark "Price Estimate" # 1 Chargement des ensembles de données avec Apache Spark (Java)
Premiers pas avec Java_Chapter 8_A propos des "Instances" et des "Classes"
[Java] Comment tester s'il est nul dans JUnit
Demandez n jours ouvrables plus tard avec JAVA
Pour l'apprentissage JAVA (2018-03-16-01)
J'ai commencé Ruby
Premiers pas avec Doma-Using Projection avec l'API Criteira
Course d'obstacles facile avec traitement pour Java
Essayez d'intégrer Ruby et Java avec Dapr
Pour mon fils qui a commencé à étudier Java avec "Introduction à Java" dans une main
Premiers pas avec les sous-requêtes utilisant Doma avec l'API Criteria
IDE 2017 pour Java
Premiers pas avec Doma-Using Joins avec l'API Criteira
[Rails] Procédure de liaison de bases de données avec Ruby On Rails
Pour les ingénieurs Java qui démarrent Kotlin à partir de maintenant
Opérations de conteneur Docker avec l'API Docker-Client pour Java
Premiers pas avec Doma - Introduction à l'API Criteria
Premiers pas avec Groovy pour les ingénieurs Java gênants
Java pour instruction
J'ai essayé de démarrer avec Gradle sur Heroku
Revenir au début et démarrer avec Java ① Types de données et modificateurs d'accès
Solution de contournement pour l'erreur Bundler.require lors de l'exécution de ruby avec crontab
Tableau 2D AtCoder ABC129 D résolu en Ruby et Java
Résolution avec Ruby, Perl et Java AtCoder ABC 128 C