J'apprends actuellement le langage de programmation Ruby et son framework Web Ruby on Rails. Il y a des symboles que vous voyez souvent dedans.
::
← Ça y est.
Du point de vue d'un débutant, ce symbole je pensais seulement "Ne regardez pas de près les noms de classe". Bien sûr, cela a du sens.
Cet article vous donnera un aperçu.
Au fait, "::" que j'ai utilisé sans prêter une attention particulière ← C'est ça. Pour le comprendre, il faut connaître le concept d'`` espace de noms ''.
Alors, qu'est-ce qu'un espace de noms?
En termes simples, c'est la plage de gestion des méthodes et des variables ''. Même avec le même
parler '', les mots sont différents aux États-Unis et au Japon, et même avec le même `` Taro '', un ensemble et deux ensembles de Taro sont des personnes différentes.
De cette façon, l'espace de noms est un mécanisme qui spécifie «à quoi appartiennent les méthodes et les variables?» Pour que les conflits dus au même nom ne se produisent pas.
Comme vous l'avez compris, ○○ :: △△ '' signifie
○○ appartenant à △△ ''.
Device :: ResistrationsController
peut être lu comme `` ResistrationsController '' appartenant à Devise.
De plus, les espaces de noms sont divisés par "classe" ou "module"
.
Je n'entrerai pas dans les détails ici, mais il existe les différences suivantes entre les classes et les modules:
Concernant les points soulignés par @scivola J'ai fait quelques corrections ci-dessous.
Jusqu'à présent, nous avons trouvé que :: '' signifie
appeler B appartenant à '' en utilisant `` A :: B ''.
En regardant de plus près, `` :: '' a deux implications:
1.Appel de constantes appartenant à un module de classe
2.Appel d'une méthode qui appartient à un module de classe
Regardons chaque exemple.
Appelons la constante PI appartenant au module Math, qui est une bibliothèque intégrée de Ruby, et sortons le rapport de circonférence. (Référence: Ruby Reference | module Math )
call_pi.rb
puts Math::PI
Exécutez ce programme.
terminal
% ruby call_pi.rb
3.141592653589793
J'ai pu sortir le `` rapport de circonférence π ''.
Utilisez ceci pour référencer une constante.
En aparté, je vais essayer une autre forme d'appel pour des exemples ultérieurs. Essayez de l'appeler avec ". (Dot)" comme pour appeler une méthode.
call_pi.rb
puts Math.PI
Lorsque vous exécutez ce programme ...
terminal
% ruby call_pi.rb
Traceback (most recent call last):
math.rb:1:in `<main>': undefined method `PI' for Math:Module (NoMethodError)
L'erreur est `` La méthode appelée PI n'est pas définie dans le module Math ''. Puisque PI est une constante (valeur) et non une méthode, il est possible qu'une telle erreur se produise.
Ensuite, regardons un exemple de "référence de méthode".
Dans cet exemple, pour voir les avantages d'avoir un espace de noms, écrivons d'abord sans espace de noms.
run.rb
def run
puts 'Courir sur 4 jambes'
end
def run
puts 'Courir sur deux jambes'
end
run
run
Lançons ce programme.
terminal
% ruby run.rb
Courir sur deux jambes
Courir sur deux jambes
Si vous réutilisez le même nom de méthode `` run '', la méthode définie ultérieurement sera référencée.
Définissons ces run '' en les séparant avec la classe
Dog '' `` Human ''.
run.rb
class Dog
def self.run
puts 'Courir sur 4 jambes'
end
end
class Human
def self.run
puts 'Courir sur deux jambes'
end
end
Dog::run
Human::run
Lançons ce programme.
terminal
% ruby run.rb
Courir sur 4 jambes
Courir sur deux jambes
Une méthode le long de l'espace de noms a été référencée.
En effet, en définissant une classe et en utilisant :: '', il est maintenant possible de spécifier un récepteur et de l'appeler, comme
Refer to Dog's run ''.
Par ailleurs, dans le cas de cette utilisation de ::
(appel de méthode), il peut être remplacé par ". (Dot)".
Plus précisément, c'est comme suit.
run.rb
(réduction)
Dog.run
Human.run
terminal
% ruby run.rb
Courir sur 4 jambes
Courir sur deux jambes
Il s'avère qu'il se comporte de la même manière qu'un appel de méthode de classe.
Et si vous utilisez ::
comme "appel de méthode"
, vous pouvez spécifier plus qu'une classe ou un module pour le récepteur.
Par exemple, comme ça.
sample.rb
10::times { |i| puts i }
terminal
% ruby sample.rb
0
1
2
3
4
5
6
7
8
9
Ce qui précède est comment utiliser `` :: '' et ce que cela signifie.
::
← Ceci est un symbole indiquant où dépend une méthode ou une variableBien que Rails soit utile, je trouve cela étonnamment douloureux lorsque je tente de le personnaliser moi-même. Et la plupart des causes sont `` Je ne connais pas les bases de Ruby ''.
Il est important de rattraper son retard dans un court laps de temps, mais il est également important de s'asseoir et de comprendre les bases. J'essaierai de garder l'équilibre tout en apprenant.