Cheet sheet pour les personnes expérimentées en Java pour apprendre Ruby (rails)

* Pour une mise à jour de temps en temps </ font>

Public cible

· JE ・ Expérimenté en Java et C #

Contexte ~ Tutoriel Rails La quantité d'informations est trop importante Problème ~

・ La quantité d'informations est énorme. Si vous pensez que la quantité d'informations est trop grande et que vous le faites dans l'ordre du haut (en faisant des affaires), cela ne s'arrêtera pas. ・ Bien qu'il y ait déjà un article similaire, j'ai décidé de créer un dictionnaire avec mes propres mots, "Ceci est en Java".

Ci-dessous le dictionnaire

・ * À proprement parler, il peut ne pas être égal, mais il y a un léger sentiment qu'il est affiché avec le sentiment que c'est cela si vous le forcez. ・ ※ Je voudrais que vous fassiez remarquer s'il y a quelque chose que "la compréhension est mauvaise" parce que vous apprenez. -Le volume étant petit à ce stade, le concept unique au rubis est également inclus.

  • initialize -Initialize méthode (la première méthode à appeler lors de la création d'une instance) ・ ** Constructeur en java ** ・ Voir ** test.rb ** </ font>
  • attr_accessor ・ Méthode Accessor ・ ** Lombok en java (Spring) (celui inclus dans la bibliothèque pour définir getter / setter dans la classe) **
  • ** Pour définir les variables d'instance ** ・ Voir ** test.rb ** </ font>
  • self ・ ~~ T Utilisé de diverses manières ~~ ・ Ce qui devient soi dépend de l'endroit où le soi est utilisé -Utilisé lors de la spécification de variables et de méthodes à l'intérieur de la classe (** Les variables de classe utilisent @@ décrit plus tard **) -Spécifiez le champ spécifié par attr_accessor -Il est également possible d'afficher l'appelant de la méthode (méthode description dans ** test.rb ** ・ ** Ceci ** en java ・ Voir ** test.rb ** </ font>

test.rb



class Car
  #Variables d'objet (valeurs)
  # type(Type de voiture),weight(poids),user(Utilisateur)
  attr_accessor :type,:weight,:user

  #Méthode spéciale d'initialisation
  def initialize
    self.type = 'SUV'
    self.weight = 2500
  end

  #Méthode objet (traitement)
  def description(user)
    puts "Bonjour#{user},Ce type de voiture est#{type},Le poids est#{power}est."
  end
end

#Créez une instance et affectez-la à une variable
Car_A = Car.new

Car_A.description('je')

p Car_A

- @ (à la marque)

・ Celui attaché à la variable d'instance ・ D'accord avec la variable d'instance Java * 1)

    1. ... Une variable de champ associée à une instance, qui est une variable de chaque instance générée par "new". ・ ** Voir test2.rb ** </ font> * Vous pouvez écrire comme ceci

test2.rb



class Car
  #Variables d'objet (valeurs)
  # type(Type de voiture),weight(poids),user(Utilisateur)
  attr_accessor :type,:weight,:user

  #Méthode spéciale d'initialisation
  def initialize
    @type = 'SUV'
    @weight = 2500
  end

  #Méthode objet (traitement)
  def description(user)
    puts "Bonjour#{user},Ce type de voiture est#{@type},Le poids est#{@power}est."
  end
end

#Créez une instance et affectez-la à une variable
Car_A = Car.new

Car_A.description('je')

p Car_A

- @@ (deux à points)

・ Celui attaché à la variable de classe -Peut être utilisé dans les classes et les instances ・ Les valeurs sont partagées ・ Voir ** test3.rb ** </ font>

test3.rb



class Test
  @@class_var = 0

  def foo
    @@class_var += 1
    p @@class_var
  end

  def self.hoge
    @@class_var += 1
    p @@class_var
  end
end

test = Test.new

#Les valeurs sont partagées dans la même instance
test.foo # => 1
test.foo # => 2

#Les valeurs sont partagées même si les instances sont différentes
test2 = Foo.new
test2.foo # => 3

#Il est accessible à partir des méthodes de classe et les valeurs sont partagées.
Test.hoge # => 4

  • require

・ Je voulais écrire import ... en java, mais en réalité, require semble avoir un degré de liberté plus élevé (voir le lien ci-dessous). ・ [Ruby] Ruby require est différent de Java

- module

・ Je n'ai pas trouvé cela en Java. .. ..

  • ** Différence de classe **

  • Impossible de créer une instance.

  • Ne peut pas être hérité.

  • ** Utilisation ** --Namespace (Assurer l'unicité des méthodes ... Pour éviter la duplication des noms de méthodes lors de l'importation de bibliothèques, etc.) --Mix-in (à utiliser en incluant toutes les méthodes dans un module)

Recommended Posts