简单的ruby语法问题

时间:2011-03-20 14:38:32

标签: ruby class syntax

  

可能重复:
  What is Ruby's double-colon (::) all about?

你能解释一下,红宝石中的两个点::是什么意思吗?

在这个例子中解释我:

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

ASW是什么,什么是S3,什么是Bucket(我的意思是,类,包,对象......)

2 个答案:

答案 0 :(得分:5)

以下是您在幕后使用的确切代码:

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

如您所见,有嵌套的模块/类:

module AWS
  module S3
     class Bucket < Base
     end
  end
end

所以:

  • AWS是一个模块。
  • S3是一个模块。
  • Bucket是一个班级。

类Bucket嵌套在模块S3内,模块S3嵌套在模块AWS中。

模块基本上是一组方法/常​​量,但它们与不能拥有实例的意义上的类不同。您经常使用它来重构代码并更好地设计代码。有关模块here的更多信息。

::用于引用嵌套的模块/类。它是一种解析运算符,通过了解它们的路径,帮助您到达嵌套的模块/类/常量。

答案 1 :(得分:3)

这是一个ruby module。模块是类的容器,它用于分隔命名空间,它与java包类似(在某种程度上)。