Comment écrire Scala du point de vue de Java

Comme le dit le titre. Je voulais faire Scala, alors je l'ai résumé. Prévu pour être mis à jour à chaque fois pendant l'apprentissage. Au fait, mon expérience est C # 4 ans et Java 1 an.

Règles de dénomination

Cela ressemble bien à Java. Affaire de chameau

Règles détaillées

variable

L'inférence de type fonctionne avec les déclarations! (À partir de 10 pour Java)

val hoge = 1 //immuable (immuable, variable avec final)
var hoge = 1 //mutable (variable)

Avec spécification de type,

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

Pour incorporer une variable dans une chaîne, préfixez le littéral avec s et préfixez la variable avec $.

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

Vous pouvez également incorporer du code dans le littéral

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

if déclaration

L'écriture est la même Peut être écrit comme une expression qui renvoie une valeur

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

opérateur

C'est fondamentalement la même chose, mais il semble qu'il n'y ait pas d'opérateur ternaire. Puisque vous pouvez renvoyer la valeur avec if, vous pouvez la remplacer

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

switch Il semble dire match

val team = "Alors"
val result = team match {
  case "B" | "mouette" => "Bッテ" //ou condition
  case other => s"undefined: ${other}" // default
}
println(result)
// undefined:Alors

boucle

while est le même, mais différent de for Il semble que la condition s'appelle un générateur

for (i <- 0 to 3) println(i) //La condition peut être comprise entre 0 et 4 et peut être égale ou supérieure à 0 et inférieure à 4.
// 0
// 1
// 2
// 3

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

var result = for (i <- 0 to 3) yield i //Obtenir des résultats
for (i <- result) println(i)

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

Méthode

Avec java,

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

Mais,

def sayHello: Unit = {
  println("hello")
}
    
def getHelloStr: String = {
  "Hello" //retour facultatif
}
    
def getHelloMessage(firstName: String, familyName: String): String = {
  s"Hello $firstName $familyName"
  // firstName: String = "taro"Vous pouvez définir la valeur par défaut comme ceci. C#Est le même que
}

classe

class Human(val name: String) { //Devenir un constructeur avec la définition des paramètres
  def sayHello() = println("hello") //Définition de méthode de type Lambda
}

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

L'héritage est

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

paquet

La déclaration est la même

package aaa.bbb.ccc

L'appel est

import aaa.bbb.ccc.ddd //Individuel
import aaa.bbb.ccc.ddd.{ddd, eee} //Plusieurs
import aaa.bbb.ccc.ddd._ //collecte

Modificateur d'accès

public, protected, private La manière d'attacher et de voir les membres de la classe attachée est la même Si rien n'est attaché, il sera public par défaut (private est la valeur par défaut en C #, n'est-ce pas? final La fonction associée à une classe ou à un membre est la même que Java. Déclarer avec val pour rendre la variable immuable

object Cela semble être un mot-clé, pas un type Ajouter un objet à la classe avec le même nom

//C'est comme un objet compagnon
object Human {
  def sayHello() = println("hello") //Peut être appelé sans instanciation comme une méthode de classe
  def apply(name: String) = new Human(name) //Devenez la définition de la méthode d'usine
}

//Ceci est une classe compagnon
class Human (val name: String) {
  def sayHello() = println("hello")
}

//Comment utiliser les objets compagnons
Human.sayHello()
val taro = Human("taro") //Générer une instance de taro

println semble être une méthode d'un objet appelé Predef

Un nouveau concept. ..

Classe abstraite

Ouais, pas de résistance

abstract class Animal {
  def cry()
}

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

Interface

Cela semble être un trait

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

class Player extends Runnable //Même syntaxe que l'héritage d'implémentation C#Pareil que
class SuperPlayer extends Player with Runnable //En cas d'héritage, implémenter avec avec

Mise à jour. .. ..

Recommended Posts

Comment écrire Scala du point de vue de Java
[Java] Mémo sur la façon d'écrire la source
Comment rédiger un commentaire java
[Java] Comment obtenir l'URL de la source de transition
[Java] Types de commentaires et comment les rédiger
[Java] Comment extraire le nom du fichier du chemin
Langage Java du point de vue de Kotlin et C #
[Java] Comment obtenir la valeur maximale de HashMap
Étudier Java # 6 (Comment écrire des blocs)
Comment écrire une déclaration de variable Java
La route de JavaScript à Java
Accédez à l'abréviation à partir de 5 exemples de listes Java en italique
Comparaison de l'écriture des fonctions de rappel (Java, JavaScript, Ruby)
Comment obtenir les informations les plus longues de Twitter à partir du 12/12/2016
Comment écrire et noter lors de la migration de VB vers JAVA
Comment dériver le dernier jour du mois en Java
[Java] Comment utiliser la classe File
[java] Résumé de la gestion des caractères
Résumé de l'écriture des arguments d'annotation
[Introduction à Java] Comment écrire un programme Java
Bases du développement Java ~ Comment écrire des programmes (variables et types) ~
[Java] Comment utiliser la méthode toString ()
Etudier comment utiliser le constructeur (java)
[Traitement × Java] Comment utiliser la boucle
[Java] Comment sortir et écrire des fichiers!
Comment déterminer le nombre de parallèles
[Java] Comment régler la date sur 00:00:00
[Java] Comment obtenir le répertoire actuel
[Java] [Maven3] Résumé de l'utilisation de Maven3
[Traitement × Java] Comment utiliser la classe
Java: Comment envoyer des valeurs du servlet au servlet
Comment trier une liste de SelectItems
Comment obtenir la date avec Java
De Java naissant (3 ans) à Node.js (4 ans). Et l'impression de retourner à Java
Sortie du livre "Introduction à Java"
[Traitement × Java] Comment utiliser la fonction
[Java] Comment utiliser la classe Calendar
[Java] Comment convertir du type String en type Path et obtenir le chemin
Comment vérifier le contenu de la chaîne de caractères java de longueur fixe
Comment écrire un exemple d'implémentation Java d'un problème F01 en temps réel hors ligne
Introduction à Scala du point de vue Java (basique)
Comment obtenir la longueur d'un fichier audio avec Java
Comment incrémenter la valeur de Map sur une ligne en Java
Résumons la grammaire Java 8 du point de vue des ingénieurs iOS
[Java] Comment récupérer les paramètres passés du html côté serveur
Comment savoir quelle version Java d'un fichier de classe a été compilée
[Java] Comment accéder au début d'une chaîne spécifique à l'aide de la classe String
Comment trouver le nombre total de pages lors de la pagination en Java
Comment obtenir le chemin absolu d'un répertoire s'exécutant en Java
[Cas d'amélioration Java] Comment atteindre la limite de l'auto-apprentissage et au-delà
À partir de Java9, les constructeurs de classe correspondant aux types primitifs sont marqués comme obsolètes.
J'ai essayé de traduire la grammaire de R et Java [Mis à jour de temps en temps]
Promesse JDBC et exemple d'écriture
Comment trouver la cause de l'erreur Ruby
[java] Résumé de la gestion des chaînes de caractères