Wie schreibe ich Scala aus der Perspektive von Java

Wie der Titel schon sagt. Ich wollte Scala machen, also habe ich es zusammengefasst. Geplant, jedes Mal während des Lernens aktualisiert zu werden. Mein Hintergrund ist übrigens C # 4 Jahre und Java 1 Jahr.

Namensregeln

Es sieht gut aus wie Java. Kamelkoffer

Detaillierte Regeln

Variable

Typinferenz funktioniert mit Deklarationen! (Ab 10 für Java)

val hoge = 1 //unveränderlich (unveränderlich, variabel mit final)
var hoge = 1 //veränderlich (variabel)

Mit Typenspezifikation,

val i:Int = 1
val str:String = "Hi!"

Um eine Variable in eine Zeichenfolge einzubetten, stellen Sie dem Literal s und der Variablen $ voran

val firstName = j
val familyName = ichikawa
val str = s"my name is $firstName - $familyName"

Sie können Code auch in das Literal einbetten

val str = s"My weight is ${weight + 3}"

if-Anweisung

Schreiben ist das gleiche Kann als Ausdruck geschrieben werden, der einen Wert zurückgibt

val age = 30
val result =
  if (age >= 30) "over 30"
    else "under 30"
println(result)// over 30

Operator

Es ist im Grunde das gleiche, aber es scheint, dass es keinen ternären Operator gibt. Da Sie den Wert mit if zurückgeben können, können Sie ihn ersetzen

val result = if (age >= 30) "over 30" else "under 30"

switch Es scheint Match zu sagen

val team = "Damit"
val result = team match {
  case "B." | "Möwe" => "B.ッテ" //oder Zustand
  case other => s"undefined: ${other}" // default
}
println(result)
// undefined:Damit

Schleife

während ist das gleiche, aber anders als für Es scheint, dass die Bedingung als Generator bezeichnet wird

for (i <- 0 to 3) println(i) //Die Bedingung kann 0 bis 4 sein und kann 0 oder mehr und weniger als 4 sein.
// 0
// 1
// 2
// 3

for (i <- 0 to 3 if i != 2) println(i) //Bedingt
// 0
// 1
// 3

var result = for (i <- 0 to 3) yield i //Ergebnisse bekommen
for (i <- result) println(i)

for (i <- 0 to 3; j <- 0 to 3) println(s"$i, $j") //zum Verschachteln

Methode

Mit Java,

public void sayHello() {
  System.out.println("hello");
}
    
public String sayHelloStr() {
  return "hello";
}
    
public String getHelloMessage(String firstName, String familyName) {
  return "Hello " + firstName + " " + familyName;
}

Aber,

def sayHello: Unit = {
  println("hello")
}
    
def getHelloStr: String = {
  "Hello" //Rückgabe Optional
}
    
def getHelloMessage(firstName: String, familyName: String): String = {
  s"Hello $firstName $familyName"
  // firstName: String = "taro"Sie können den Standardwert wie folgt festlegen. C.#Ist das gleiche wie
}

Klasse

class Human(val name: String) { //Werden Sie Konstruktor mit Parameterdefinition
  def sayHello() = println("hello") //Lambda-ähnliche Methodendefinition
}

//Instanziierung
val human = new Human("j-ichikawa")
val name = human.name;
human.sayHello()

Vererbung ist

class PerfectHuman(name: String) extends Human(name) {
  override def sayHello() = println("perfect hello")
}

Paket

Erklärung ist das gleiche

package aaa.bbb.ccc

Der Anruf ist

import aaa.bbb.ccc.ddd //Individuell
import aaa.bbb.ccc.ddd.{ddd, eee} //Mehrere
import aaa.bbb.ccc.ddd._ //sammeln

Zugriffsmodifikator

öffentlich, geschützt, privat Die Art und Weise, wie Sie die Mitglieder der angehängten Klasse anhängen und sehen, ist dieselbe Wenn nichts angehängt ist, ist es standardmäßig öffentlich (privat ist die Standardeinstellung in C #, nicht wahr? final Die Funktion beim Anhängen an eine Klasse oder ein Mitglied ist dieselbe wie bei Java. Deklarieren Sie mit val, um die Variable unveränderlich zu machen

object Es scheint ein Schlüsselwort zu sein, kein Typ Fügen Sie der gleichnamigen Klasse ein Objekt hinzu

//Es ist wie ein Begleitobjekt
object Human {
  def sayHello() = println("hello") //Kann ohne Instanziierung wie eine Klassenmethode aufgerufen werden
  def apply(name: String) = new Human(name) //Werden Sie zur Definition der Fabrikmethode
}

//Dies ist eine Begleiterklasse
class Human (val name: String) {
  def sayHello() = println("hello")
}

//Verwendung von Begleitobjekten
Human.sayHello()
val taro = Human("taro") //Taro-Instanz generieren

println scheint eine Methode eines Objekts namens Predef zu sein

Ein neues Konzept. ..

Abstrakte Klasse

Ja, kein Widerstand

abstract class Animal {
  def cry()
}

class Cat extends Animal {
  def cry() = println("Nyaaaa")
}

Schnittstelle

Es scheint ein Merkmal zu sein

trait Runnable {
  def run() = println("Dadada. .. ..")
}

class Player extends Runnable //Gleiche Syntax wie Implementierungsvererbung C.#Gleich wie
class SuperPlayer extends Player with Runnable //Wenn geerbt, implementieren Sie mit mit

Aktualisierung. .. ..

Recommended Posts

Wie schreibe ich Scala aus der Perspektive von Java
[Java] Memo zum Schreiben der Quelle
Wie schreibe ich einen Java-Kommentar
[Java] So erhalten Sie die URL der Übergangsquelle
[Java] Arten von Kommentaren und wie man sie schreibt
[Java] So extrahieren Sie den Dateinamen aus dem Pfad
Java-Sprache aus der Sicht von Kotlin und C #
[Java] So erhalten Sie den Maximalwert von HashMap
Java # 6 studieren (Wie man Blöcke schreibt)
So schreiben Sie eine Java-Variablendeklaration
Der Weg von JavaScript nach Java
Kommen Sie zu den Abkürzungen aus den fünf Beispielen für kursive Java-Listen
Vergleich des Schreibens von Callback-Funktionen (Java, JavaScript, Ruby)
So erhalten Sie die längsten Informationen von Twitter ab dem 12.12.2016
Schreiben und Notizen bei der Migration von VB zu JAVA
So leiten Sie den letzten Tag des Monats in Java ab
[Java] Verwendung der File-Klasse
[java] Zusammenfassung des Umgangs mit char
Zusammenfassung zum Schreiben von Anmerkungsargumenten
[Einführung in Java] So schreiben Sie ein Java-Programm
Grundlagen der Java-Entwicklung ~ Schreiben von Programmen (Variablen und Typen) ~
[Java] Verwendung der toString () -Methode
Studieren der Verwendung des Konstruktors (Java)
[Verarbeitung × Java] Verwendung der Schleife
[Java] Wie man Dateien ausgibt und schreibt!
So bestimmen Sie die Anzahl der Parallelen
[Java] So stellen Sie die Datums- und Uhrzeit auf 00:00:00 ein
[Java] So erhalten Sie das aktuelle Verzeichnis
[Java] [Maven3] Zusammenfassung der Verwendung von Maven3
[Verarbeitung × Java] Verwendung der Klasse
Java: So senden Sie Werte von Servlet zu Servlet
So sortieren Sie eine Liste von SelectItems
So erhalten Sie das Datum mit Java
Vom jungen Java (3 Jahre) bis zu Node.js (4 Jahre). Und der Eindruck, nach Java zurückzukehren
Ausgabe des Buches "Einführung in Java"
[Verarbeitung × Java] Verwendung der Funktion
[Java] Verwendung der Calendar-Klasse
[Java] So konvertieren Sie vom Typ String in den Pfadtyp und erhalten den Pfad
So überprüfen Sie den Inhalt der Java-Zeichenfolge mit fester Länge
Offline in Echtzeit, wie man ein Java-Implementierungsbeispiel für ein F01-Problem schreibt
Einführung in Scala aus Java-Perspektive (grundlegend)
So ermitteln Sie die Länge einer Audiodatei mit Java
So erhöhen Sie den Wert von Map in einer Zeile in Java
Lassen Sie uns die Java 8-Grammatik aus der Sicht der iOS-Ingenieure zusammenfassen
[Java] So rufen Sie die von HTML auf der Serverseite übergebenen Parameter ab
So finden Sie heraus, welche Java-Version der Klassendatei kompiliert wurde
[Java] Wie man mit der String-Klasse an die Spitze eines bestimmten Strings kommt
So ermitteln Sie die Gesamtzahl der Seiten beim Paging in Java
So ermitteln Sie den absoluten Pfad eines in Java ausgeführten Verzeichnisses
[Java-Verbesserungsfall] Wie man die Grenze des Selbststudiums und darüber hinaus erreicht
Ab Java9 werden Klassenkonstruktoren, die primitiven Typen entsprechen, als veraltet markiert.
Ich habe versucht, die Grammatik von R und Java zu übersetzen [Von Zeit zu Zeit aktualisiert]
JDBC Versprechen und Schreibbeispiel
So finden Sie die Ursache des Ruby-Fehlers
[java] Zusammenfassung des Umgangs mit Zeichenketten