Jour 17 du Calendrier de l'Avent Dip :)
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" ...!
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
Java
Father.java
//Package par défaut
public class Father {
}
Ruby
father.rb
class Father
end
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
Java
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);
}
}
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
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
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.
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».
ʻ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;
}
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é)
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
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.
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)
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