`

Ruby => 模块

    博客分类:
  • Ruby
 
阅读更多
1. 提供命名空间(namespace)
   命名空间(namespace)是为了让方法,常数,类名称不互相冲突而设计的机制。

2. 以模块形式提供的方法必须使用"模块名.方法名"的方式调用。以这种形式调用的方法又称为模块函数。

3. 在类的定义内使用include, 将模块所定义的方法与常数纳入类定义里。

4. 定义模块
module 模块名
  模块定义
end


5. 例子:
# -*- coding: utf-8 -*-

=begin
描述了模块的使用方式
=end

module HelloModule                   # module 语句

  Version = "1.0"                    # 定义常数
  def hello(name)                    # 定义方法
    print "Hello, ", name, ".\n"
  end
  module_function :hello             # 将hello以模块函数形式公开
  
end

p HelloModule::Version              # => "1.0"

p HelloModule::hello("Alice")       # => Hello, Alice.
                                    # nil

p HelloModule.hello("Alice")        # 同上

include HelloModule                 # 读入
p Version
hello("Jack")


6. 模块内部也可以定义方法,只是方法在定义之后,只能在模块内部调用。要将方法对模块外部公开,必须使用module_function。

7.
# -*- coding: utf-8 -*-

=begin
在模块函数内引用self(接受者), 可以取得改模块本身。这样就可以使用模块函数去改写模块本身的状态了,
但一般来说模块函数通常不会去使用self。
=end

module FooModule
  def foo
    p self
  end 
  module_function :foo
end

FooModule.foo                     # => FooModule        
分享到:
评论

相关推荐

    camelizable:用于 Ruby 的 Camelizable 模块

    适用于 Ruby 的 Camerazable 模块 安装 将此行添加到应用程序的 Gemfile 中: gem 'camelizable' 然后执行: $ bundle 或者自己安装: $ gem install camelizable 用法 require 'camelizable' class String ...

    essential_ruby

    hash['three'] = 3 # => {'one'=>1, 'two'=>2, 'three'=>3} ``` ### IRB(Interactive Ruby Shell) IRB是一个交互式的Ruby Shell,可以让开发者快速测试Ruby代码片段。启动IRB非常简单: ```bash irb ``` 在IRB...

    linux版 ruby-2.3.0

    - **Refinements**:这是一种新的作用域限制的模块使用方式,可以控制模块的可见性和行为,提高代码隔离。 - **Improved Proc and lambda**:Proc对象的行为更接近lambda,特别是在处理块的返回值时。 - **...

    fog-proxmox:Proxmox VE平台的雾模块

    兼容版本雾雾Proxmox VE 雾芯Ruby<0> = 1.45 > = 2.3 > = 0.6 > = 5.3 > = 1.45 > = 2.3 > = 0.8 > = 5.4 > = 1.45 > = 2.3 > = 0.9 > = 6.0 > = 2.1 > = 2.3 > = 0.10 > = 6.0 > = 2.1 > = 2.5 > = 0.14 > = 6.2 > ...

    Ruby-willpaginate一个分页库可与RubyonRailsSinatraMerbDataMapper和Sequel集成

    @posts = Post.all.paginate(:page => params[:page], :per_page => 20) ``` **DataMapper** 是一个 ORM(对象关系映射)库,它与多种数据库兼容。在 DataMapper 中,`will_paginate` 提供了方便的数据查询接口: ...

    通过elk收集微服务模块日志

    match => { "message" => "%{TIMESTAMP_ISO8601:timestamp} %{DATA:level} %{GREEDYDATA:message}" } } date { match => [ "timestamp", "ISO8601" ] } } output { elasticsearch { hosts => ["localhost:...

    ruby和redis接口

    在描述中提到的"ruby和redis接口"可能是一个自定义的Ruby库或者模块,专门用于搭建和管理RedisCluster集群。RedisCluster是Redis的分布式解决方案,它将数据分片到多个节点,提供高可用性和可扩展性。通过这个接口,...

    evenup-thin:安装、配置和运行 apache 服务。 维护模块配置文件和虚拟主机

    安装 ruby​​ Thin、设置站点配置和用于管理服务的初始化脚本的 puppet 模块。 用法: 通用瘦安装 class { 'thin': } 添加瘦站点 thin::site { 'coolapp': chdir => '/usr/share/coolapp', log => '/var/log/...

    foreman_fog_proxmox:工头插件可基于fog-proxmox gem添加Proxmox计算资源

    插件添加了计算资源:使用模块管理虚拟机和容器。 旨在满足此。 如果您喜欢它并需要更多功能,则可以或简单地它: 支持 您可以通过以下方法支持插件开发: 兼容版本 防雾剂 Proxmox 工头雾代理 领班 Ruby <0 xss...

    sugar_refinery:Ruby 的细微改进

    zip [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] # => {1=>4, 2=>5, 3=>6} 包含的改进列表 请参阅、或! 炼糖厂以前是 Zucker 这个核心扩展的集合曾经被称为zucker 。 缺少以前的功能? 它可能已被提取到一

    Install Ruby on Linux

    "bin-path" => "/usr/local/bin/rails", "check-local" => "disable" )) )) server.document-root = "/var/www/html" server.port = 80 url.rewrite-once = ( "^(/.*)$" => "/public$1" ) server.errorlog = ...

    LIGHTTTP配置

    "bin-path" => "/path/to/rails/application/public/dispatch.fcgi" ) ) ) ``` **2.2.3 Python FastCGI** 对于Python应用,需要使用类似Flup这样的库来创建FastCGI服务器。 **2.3 SSL** Lighttpd也支持SSL加密...

    puppet-ssh:用于SSH服务器和客户端的Puppet模块

    在默认服务器选项参数中设置了以下选项AuthorizedKeysFile => .ssh / authorized_keys UsePAM =>是子系统=> sftp internal-sftp 密码验证=>是ChallengeResponseAuthentication =>否GSSAPIAuthentication =>是...

    puppet-ferm:蕨木偶模块

    蕨类 目录 描述 这个人偶模块管理费姆及其规则。 用法 class { 'ferm' : } ferm ::规则 要将规则添加到ferm rules.d目录: ... rules => [ ' proto tcp dport 80 ACCEPT ' ], host => ' test3 ' , ... prio => ' 00 ' ,

    puppet-bind:安装和配置Bind9域名服务器

    bind::a { 'Hosts in example.com': ensure => 'present', zone => 'example.com', ptr => false, hash_data => { 'host1' => { owner => '192.168.0.1', }, 'host2' => { owner => '192.168.0.2', }, },}$...

    puppet-dhcp:用于部署dhcp的人偶模块

    class { 'dhcp' : service_ensure => running , dnsdomain => [ ' dc1.example.net ' , ' 1.0.10.in-addr.arpa ' , ], nameservers => [ ' 10.0.1.20 ' ], ntpservers => [ ' us.pool.ntp.org ' ], interfaces => ...

    ruby 与 sybase 连接

    1. **引入sybct模块**:在Ruby脚本的顶部,引入`sybct`模块,这将加载驱动程序并使其在代码中可用。 ```ruby require 'sybct' ``` 2. **配置连接参数**:创建一个包含连接细节的哈希,如服务器名称、用户名、密码和...

    puppet-ddclient:Puppet 的 DDclient 模块

    傀儡-ddclient DDclient的Puppet模块 DDclient 是一个小而全功能的客户端,只需要 Perl,不... password => 'mypassword', host => 'acme.dnsdynamic.com', ssl => 'yes', daemon => 300, server => 'www.dnsdynam

Global site tag (gtag.js) - Google Analytics