Ich denke, wenn Sie eine Sprache mit einer anderen Idee lernen, ist es schneller, sie durch Unterschiede zu lernen. Bevor Sie also Rails starten, sollten Sie die grundlegende Grammatik wiederholen. Es ist eine einfache Idee, sich daran zu erinnern, indem Sie so etwas wie einen Spickzettel erstellen.
Ich denke, es gibt verschiedene Engpässe, aber bitte haben Sie Verständnis dafür, dass ich nur das tue, was ich vorerst für notwendig halte. Da ich oft schreibe, werde ich den Artikel teilen.
Tsukkomi ist willkommen.
paiza.io In einem solchen Fall ist die Ausführung einfacher
Die Version, als dies gemacht wurde, ist wie folgt. Sie können die Version in Hilfe überprüfen.
Ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux] Java openjdk version "12" 2019-03-19
Wie schreibe ich einen Kommentar
//Für eine Zeile
/*
Für mehrere Zeilen
*/
#Für eine Zeile
=begin
Für mehrere Zeilen
=end
__END__
Alles nach dieser Zeile wird ein Kommentar sein
Es geht um das Trennzeichen, wenn Sie es ausführen.
String str = "World"; //Die Verarbeitung wird nur durch ein Semikolon getrennt
tmp1 = 1 #Grundsätzlich werden Zeilenumbrüche getrennt
tmp2 = 2;print("#{tmp1 + tmp2}") #Semikolon gilt auch als Trennzeichen
Hello World Zuerst von Hello World. Java hat viele Typen, da Sie Klassen erstellen müssen. Da Ruby plötzlich schreiben kann, ist der Schreibaufwand gering.
import java.util.*;
public class Main {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
#Es scheint mehrere Namen zu geben, daher beziehen Sie sich bitte auf Folgendes
# https://qiita.com/naoge/items/f5d84581d3a301a9c22f
print("Hello World")
Sie werden oft Variablen sehen. In Java wird es erweitert, indem ein Formatbezeichner mit der printf-Methode deklariert und eine Variable festgelegt wird. Die variable Erweiterung kann in Ruby verwendet werden, also werde ich es tun.
import java.util.*;
public class Main {
public static void main(String[] args) {
String str = "World";
// System.out.println("Hello" + str)Aber es ist möglich.
System.out.printf("Hello %s", str);
}
}
str = "World";
print("Hello #{str}") #{Formel(Variable)}でVariable展開可能
Wir haben oben einige Variablen verwendet, aber hier ist eine Beschreibung davon. Da Ruby-Variablen etwas kompliziert sind, scheint es schwierig zu sein, sich hier mit dem Umfang zu befassen, daher habe ich ihn nicht gesehen. Bitte beachten Sie, dass aufgrund dieses Einflusses nicht alle Variablen in Ruby abgedeckt werden können.
Da Java eine statisch typisierte Sprache ist, müssen Sie angeben, welcher Typ die Variable ist. Da Ruby eine dynamisch typisierte Sprache ist, müssen Sie keinen Typ angeben. Als Ruby-Regel sind lokale Variablen Bezeichner, die mit einem Kleinbuchstaben oder einem Unterstrich beginnen. Es scheint, dass der Unterstrich für Variablen gilt, die nicht verwendet werden. Seien Sie also vorsichtig.
String tmp1 = "1";
tmp1 = "1"
Mit Ruby können Variablen unterschiedlichen Typs in deklarierte Variablen aufgenommen werden.
tmp1 = 1
puts("#{tmp1}") #Puts ist eine Standardausgabe mit Zeilenumbrüchen
tmp1 = "2"
puts("#{tmp1}")
Java deklariert mit final, um ein Umschreiben zu verhindern. Im Allgemeinen ist es in Ordnung, statisch hinzuzufügen, also fügen Sie auch statisch hinzu. Da Ruby Variablen definiert, die mit dem englischen Großbuchstaben als Konstanten beginnen, wird dies nur anhand des Variablennamens beurteilt.
public static final String ONE = "1";
ONE = "1"
__END__
Wenn Sie diese Variable neu schreiben, wird die folgende Warnung angezeigt und das Programm funktioniert nicht.
warning: already initialized constant ONE
Im Gegensatz zu Java können Ruby-Konstanten auch auf der obersten Ebene definiert werden. Und es ist möglich, eine Konstante mit demselben Namen in der Klasse zu haben. In diesem Fall verringert sich die Priorität, wenn Sie vom Verwendungsort nach außen gehen.
ONE = "1"
class A
ONE = "2"
def print
p ONE
end
end
a = A.new
a.print #Dies wird als 2 angezeigt
p ONE #Dies wird als 1 angezeigt
Java hat keine globalen Variablen im engeren Sinne. Da alles zu Ojbect gehören muss, können Sie eine Variable erstellen, die wie ein Ganzes aussieht, aber keine globale Variable ist.
Ruby kann als globale Variable deklariert werden, indem "$" vorangestellt wird. Sie können auch auf nicht deklarierte globale Variablen verweisen, diese sind jedoch "Null".
$str = "a"
Ab hier zeigt sich die Komplexität der Ruby-Variablen. Ich verstehe, dass Instanzvariablen Mitgliedsvariablen in Java ähnlich sind. Anerkennung, dass es in Bezug auf den Umfang genauso behandelt wird wie geschützt!
Ruby deklariert Variablen mit "@" am Anfang. Im Gegensatz zu Java wird es nicht als Mitgliedsvariable deklariert und der Referenzbereich ist breit (wenn es sich um eine Klasseninstanzvariable handelt). Wenn Sie also die Klasse komplizieren, wissen Sie nicht, wo etwas passiert, daher bin ich vorsichtig. Ich denke, es ist der richtige Weg, die Klasse einfach zu halten, anstatt sie nicht zu benutzen, also sei dort vorsichtig.
Im Fall von Ruby unterscheiden sich auch die Referenzen der Klassenmethode (self) und der Instanzmethode (ohne self). Da sich das Selbst wie eine statische Methode anfühlt, versuche ich das zu verstehen.
public class A {
protected String str;
}
class A
def save(target)
@str = target;
end
end
Eine Variable, die zu einer Klasse gehört. Es scheint in Java als statisch behandelt zu werden und wirkt sich auf andere Klasseninstanzen aus.
Es ist sicherer, dies nicht zu verwenden. Es scheint nur die Ursache des Chaos zu sein.
public class A {
protected static String str;
}
class A
def save(target)
@@str = target;
end
end
Wenn Sie eine Instanzvariable als zu einer Klasse gehörend deklarieren, wird sie zu einer Klasseninstanzvariablen und kann nur über die Klassenmethode (self) referenziert werden. Der Unterschied zu Instanzvariablen scheint darin zu bestehen, dass sie nur von ihren Klassenmethoden abhängen. Wenn Sie versuchen, es von anderen zu sehen, wird es als Instanzvariable behandelt.
Es scheint, dass dies mit Java nicht möglich ist, daher müssen Sie sich daran erinnern, dass Sie dies auch tun können.
# 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