Erste Schritte mit Ruby für Java-Ingenieure

Tag 17 von Dip Adventskalender :)

Einführung

Was für ein Artikel?

Java-Ingenieure haben angefangen, Ruby zu schreiben Dies ist ein Artikel, der teilt, was ich dachte: "** Ist das so etwas wie Javas ◯◯! **".

Dieses Mal werde ich über "Codierung" schreiben ...!

Inhaltsverzeichnis

Klasse Instanziierung (#Instantisierung) [Methode](# Methode) [Instanziierung (mit Argumenten)](# Instanziierung (mit Argumenten)) [Array / Liste](# Sequenzliste) [Map / Hash](#map Hash) [Was war nützlich zu wissen](# Was war nützlich zu wissen) Schlussfolgerung

Klasse

Java

Father.java


//Standardpaket
public class Father {
}

Ruby

father.rb


class Father
end

Instanziierung

Java

Main.java


//Standardpaket
public class Main {

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

}

Ruby

main.rb


require './father.rb' # ./father.Lesen Sie rb. Ähnlich wie beim Import in Java.

father = Father.new

Methode

Java

Erklärung

Father.java


public class Father {

    //statische Methode
    public static void hello() {
        System.out.println("Hello...");
    }

    //Nicht statische Methode (Instanzmethode)
    public void tellTheTruth() {
        System.out.println("I am your father.");
    }

    //Nicht statische Methode (Instanzmethode):Mit Argument
    public void fuga(String words) {
        System.out.println(words);
    }

}

Anruf

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

Erklärung

father.rb


class Father
  #Klassenmethode
  def self.hello
    puts 'Hello...'
  end

  #Instanzmethode (kein Argument)
  # snake_Fallnotation
  def tell_the_truth
    puts 'I am your father.'
  end

  #Instanzmethode (mit Argumenten)
  def fuga(words)
    puts words
  end
end

Anruf

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. ()Kann ausgelassen werden. Es sieht aus wie ein Mitgliedsaufruf, ist aber ein Methodenaufruf.

father.fuga('nooooo!!') # nooooo!!
father.fuga 'nooooo!!'  # nooooo!! ()Kann ausgelassen werden. Es wird oft verwendet, ist aber auf der rechten Seite der Methode schwer zu verstehen, daher ist es besser, es zu vermeiden.

Instanziierung (mit Argumenten)

In der obigen Instanziierung war es ein Konstruktor ohne Argumente, aber dieses Mal werden wir es mit einem Konstruktor mit Argumenten objektähnlicher machen. 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 ist der sogenannte Konstruktor. Außerdem repräsentiert "@ hoge" eine Instanzvariable. In Java wird es oft als "Feld" oder "Mitgliedsvariable" bezeichnet.

Über Zeichenketten

attr_accessor / Über Accessoren

attr_accessor definiert einen Accessor (sogenannter Getter / Setter). Tatsächlich ist es dasselbe wie das Schreiben des folgenden Codes.

def name
  @name 
end

def name=(val)
  @name = val
end

Gleich wie Java unten.

public String getName() {
    return name;
}

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

Anordnungsliste

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 oder höher
        words.forEach(System.out::println);
    }
}

Ruby

ppap.rb


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

puts words[0] # pen

words.each do |word|
  #Die folgende Verarbeitung wird in einer Schleife ausgeführt.
  #Das geloopte Objekt wird in Word gespeichert.
  #Die erste Schleife ist also'pen'Wird auf der Konsole angezeigt.
  puts word
end

Arrays werden durch die Array-Klasse dargestellt. Array - Ruby Reference

# Each wird häufig zum Wiederholen eines Arrays verwendet. Es gibt auch eine for-Anweisung, aber wenn Sie sich zuerst an "# each" erinnern, sind die meisten Schleifen in Ordnung.

Der folgende Artikel ist sehr leicht zu verstehen über den "Block", der durch "do" bis "end" dargestellt wird.

Verstehen der Verwendung von [Ruby] -Blöcken und Proc (Es kann verwirrend sein, daher ist es möglicherweise besser, es auf Lager zu halten und später zu lesen.)

Wenn Sie berücksichtigen, dass die Folge von Zeichenfolgen durch die folgende Schreibmethode generiert wird, Es ist weniger wahrscheinlich, dass Sie begeistert sind, von anderen geschriebenen Code zu lesen.

#Generieren Sie ein Array von Zeichenfolgen
words = %w(pen pineapple apple pen)

Verwenden Sie die% -Notation (Prozent-Notation) in Ruby ist in dieser Hinsicht sehr hilfreich. (Lager empfohlen)

Karte / Hash

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", "Tauchen");
        map.put("service", "Tarako in der Krankenschwester");

        System.out.println(map.get("name")); //Tauchen
        System.out.println(map.get("service")); //Tarako in der Krankenschwester
    }

}

Ruby Es gibt verschiedene Möglichkeiten, Hashes in Ruby zu schreiben.

main.rb


#1 Zeichenfolge als Schlüssel
dip = {'name' => 'Tauchen', 'service' => 'Tarako in der Krankenschwester'}

puts dip['name'] #Tauchen
puts dip['service'] #Tarako in der Krankenschwester

#2 Verwenden Sie das Symbol als Schlüssel.
dip = {name: 'Tauchen', service: 'Tarako in der Krankenschwester'}

puts dip[:name] #Tauchen
puts dip[:service] #Tarako in der Krankenschwester

Die Schreibmethode ist nicht auf die oben genannten beschränkt, und die Unterstützung unterscheidet sich je nach Version. Die folgenden Artikel sind sehr leicht zu verstehen und sollten gelesen werden. Verschiedene Hash-Deklarationsmethoden für Ruby

Was war nützlich zu wissen

Über den Namespace (über Foo :: Bar.new)

Der folgende Schreibstil kann Sie verwirren.

Foo::Bar.new

Dies ist der Prozess, der die folgenden Klassen tatsächlich instanziiert.

module Foo
  class Bar
  end
end

Eine der Rollen des Moduls besteht darin, einen ** Namespace ** bereitzustellen. (Andere Funktionen wie das Bereitstellen von Methoden.) Es ist ein Konzept ähnlich einem Paket in Java.

Bar.java


package foo;

public class Bar {
}

Fuga.java


package hoge;

import foo.Bar;

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

Ähnlich wie oben.

NoMethodError tritt anstelle von NullPointerException auf

Rubys nil ähnelt Javas null, ist aber etwas anders.

nil ist die einzige Instanz der NilClass-Klasse. nil steht für false mit dem falschen Objekt und alle anderen Objekte sind true. class NilClass (Ruby 2.3.0)

Wenn Sie daher eine Methode aufrufen, die in der Klasse nil nicht vorhanden ist, Sie erhalten eine Ausnahme namens "NoMethodError" anstelle einer Ausnahme wie "NullPointerException".

main.rb


#Rufen Sie eine undefinierte Methode auf.
nil.special_method 
#Speziell für die Nullklasse_Da es keine Methode gibt, wird der folgende Fehler ausgegeben.
undefined method `special_method' for nil:NilClass (NoMethodError)

abschließend

Ich persönlich denke, dass Ruby eine schöne Grammatik hat, praktische eingebaute Klassen, und je mehr Sie es verwenden, desto vertrauter wird es. Wenn Sie von Java aus eingeben, erhalten Sie möglicherweise etwas wie "** Ich mache mir Sorgen um etwas ohne Typdeklaration !! **", aber ich denke, Sie werden sich bald daran gewöhnen. (Ich habe mich in 3 Tagen daran gewöhnt.) Wenn Sie eine andere Sprache starten, ändert sich Ihre Ansicht der Originalsprache. Warum also nicht?

Recommended Posts

Erste Schritte mit Ruby für Java-Ingenieure
Erste Schritte mit Ruby
Erste Schritte mit Java Collection
Links & Memos für den Einstieg in Java (für mich)
Erste Schritte mit Java Basics
Erste Schritte mit Ruby-Modulen
Erste Schritte mit älteren Java-Ingenieuren (Stream + Lambda)
Erste Schritte mit Docker für Mac (Installation)
Einführung in Java ab 0 Teil 1
Erste Schritte mit DBUnit
Erste Schritte mit Swift
Erste Schritte mit Doma-Transaktionen
Erste Schritte mit Java 1 Ähnliche Dinge zusammenstellen
Erste Schritte mit Kotlin zum Senden an Java-Entwickler
Erste Schritte mit der Verarbeitung von Doma-Annotationen
Erste Schritte mit Java-Programmen mit Visual Studio Code
Java-Programmierübungen für Neulinge, die bei aktiven Ingenieuren unbeliebt sind
Erste Schritte mit JSP & Servlet
Erste Schritte mit Spring Boot
Erste Schritte mit Java und Erstellen eines Ascii Doc-Editors mit JavaFX
Erste Schritte mit Java_Kapitel 5_Praktische Übungen 5_4
Ruby Convenience-Methode für junge Ingenieure
Aktivieren Sie OpenCV mit Java8. (Für mich)
[Google Cloud] Erste Schritte mit Docker
Erste Schritte mit Docker mit VS-Code
Zurück zum Anfang, Erste Schritte mit Java ② Steueranweisungen, Schleifenanweisungen
Erste Schritte mit dem Doma-Criteria API Cheet Sheet
Lernen Sie aus "Na und", den Grundlagen von Java [für Anfänger]
Einführung in den Parametrisierungstest in JUnit
Erste Schritte mit Ratpack (4) -Routing & Static Content
Beginnen Sie mit der Funktionsweise von JVM GC
Tipps zur Interoperabilität mit Kotlin zum Senden an Java-Entwickler
Erste Schritte mit dem Language Server Protocol mit LSP4J
Erste Schritte mit dem Erstellen von Ressourcenpaketen mit ListResoueceBundle
Erste Schritte mit maschinellem Lernen mit Spark "Preisschätzung" # 1 Laden von Datensätzen mit Apache Spark (Java)
Erste Schritte mit Java_Kapitel 8_Über "Instanzen" und "Klassen"
[Java] So testen Sie, ob es in JUnit null ist
Fragen Sie n Werktage später bei JAVA nach
Für JAVA-Lernen (2018-03-16-01)
Ich habe Ruby gestartet
Erste Schritte mit der Doma-Projektion mit der Criteira-API
Einfaches Hindernisrennen mit Java-Verarbeitung
Versuchen Sie, Ruby und Java in Dapr zu integrieren
Für meinen Sohn, der angefangen hat, Java mit "Einführung in Java" in einer Hand zu studieren
2017 IDE für Java
Erste Schritte mit Doma-Using Joins mit der Criteira-API
[Rails] Verfahren zum Verknüpfen von Datenbanken mit Ruby On Rails
Für Java-Ingenieure, die ab sofort Kotlin starten
Docker Container Operations mit Docker-Client API für Java
Erste Schritte mit Doma-Einführung in die Kriterien-API
Erste Schritte mit Groovy für problematische Java-Ingenieure
Java für Anweisung
Ich habe versucht, mit Gradle auf Heroku zu beginnen
Zurück zum Anfang und erste Schritte mit Java ① Datentypen und Zugriffsmodifikatoren
Problemumgehung für Bundler.require-Fehler beim Ausführen von Ruby mit crontab
AtCoder ABC129 D 2D-Array In Ruby und Java gelöst
Lösen mit Ruby, Perl und Java AtCoder ABC 128 C.