2011-03-20 4 views
1

Possible en double:
What is Ruby's double-colon (::) all about?question simple syntaxe Ruby

Pouvez-vous me l'expliquer, ce que deux points dans :: signifie rubis?

Expliquez-moi sur cet exemple:

AWS::S3::Bucket.find(BUCKET).objects 

Ce qui est ici ASW, ce S3, et ce qui est Bucket (je veux dire, les classes, les paquets, objets, ...)

+0

Dupliquer: http://stackoverflow.com/questions/3009477/what-is-rubys-double-colon-all-about. – Blender

+0

"Simple ruby ​​... question" n'est pas un titre très utile. 1) Ne pas décrire à quel point la question est difficile dans le titre. 2) Tout dans Stack Overflow est une question, en disant que c'est une question redondante. Tout ce que nous dit le titre, c'est que c'est à propos de la syntaxe de Ruby. –

Répondre

5

Voici le code exact que vous utilisez sous le capot:

https://github.com/marcel/aws-s3/blob/master/lib/aws/s3/bucket.rb

Comme vous pouvez le voir, il existe des modules/classes imbriquées:

module AWS 
    module S3 
    class Bucket < Base 
    end 
    end 
end 

donc:

  • AWS est un module.
  • S3 est un module.
  • Bucket est une classe.

La classe Bucket est imbriquée dans le module S3 qui est imbriqué dans le module AWS.

Un module est essentiellement un ensemble de méthodes/constantes, mais elles diffèrent des classes dans le sens où elles ne peuvent pas avoir d'instances. Vous l'utilisez beaucoup pour refactoriser votre code et mieux le concevoir. Plus d'informations sur les modules here.

Le code :: est utilisé pour désigner les modules/classes imbriqués. C'est une sorte d'opérateur de résolution, qui vous aide à atteindre vos modules/classes/constantes imbriqués en connaissant leurs chemins.

3

Il est un ruby module . Un module est un conteneur de classes, et il est utilisé pour séparer l'espace de noms, il est similaire (en quelque sorte) aux paquets java.