(十四)模块(Module)的补充、Mix-in

(1)Module和Class的关系、Module和Namespace的关系,Devise

#查看一个类的父类,第二个说明类继承自模块(模块是类的父类)
puts String.superclass,Class.superclass,Module.superclass


#ruby没有命名空间的概念,用来避免与隔绝重复变量名和类名等等,ruby模块作用就是命名空间
#rails开发时,Devise库用来做用户信息验证的,比如用户加密,登陆过后自动更新ip地址登陆时间等
#Devise是个大模块,里面又包含很多小模块,比如更新的模块,登陆的模块,认证的模块
#如下需要用到Devise的login,直接include进来就行
User
include Devise
::login

 

(2)Mix-in,关键字include、extend

首字母必须大写的要是没大写(比如类和模块),系统报错必须是常量(因为常量大写)

模块命名必须首字母大写,不然会报如上错误

module First
  A
=1

  def greet
    p "greet"
  end
end

module Second
  B
=2

  def self.hello
    p "hello"
  end
end

class Student
  include First
  extend First
  extend Second

  def initialize(no)
    @no=no
  end
end


a=Student.new(1)
a.greet #这个混入可以使用
Student
.greet #这个混入可以使用
Student
.hello #extend Second不能使用模块自己的self.方法,模块的.self方法是永远不能被混入的
#重点:include会把方法划分到类的实例方法中去,extend则把模块的方法划分到类的类方法中去

 

转载于:https://www.cnblogs.com/blueColdFire/p/5164670.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值