新建一个trig.rb程序并写入:

#-*-coding:UTF-8 -*-#Ruby模块Module
# 模块提供了一个命名空间和避免名字冲突。模块实现了 mixin 装置。
module TrigPI=3.14def Trig.sin(x)puts "sinx"enddef Trig.cos(x)puts "cosx"end
end

再新建一个moral.rb程序并写入:

</pre><pre class="ruby" name="code">#-*-coding:UTF-8 -*-#Ruby模块Module
# 模块提供了一个命名空间和避免名字冲突。模块实现了 mixin 装置。
module MoralVERY_BAD=0BAD=1def Moral.sin(badness)puts "sinx"end
end

然后在主程序中调用以上两个程序文件:

# require 语句类似于 C 和 C++ 中的 include 语句以及 Java 中的 import 语句。如果一个第三方的程序想要使用任何已定义的模块,则可以简单地使用 Ruby require 语句来加载模块文件:
# 在这里,文件扩展名 .rb 不是必需的
$LOAD_PATH <<'.'
# 使用 $LOAD_PATH << '.' 让 Ruby 知道必须在当前目录中搜索被引用的文件。
# 如果您不想使用 $LOAD_PATH,那么您可以使用 require_relative 来从一个相对目录引用文件。require 'trig.rb'
require 'moral.rb'
y=Trig.sin(Trig::PI/4)
wrongdoing=Moral.sin(Moral::VERY_BAD)

二、在类中引用如下:

新建support.rb程序文件:

module WeekFIRST_DAY="Sunday"def Week.weeks_in_month #注意定义的时候就需要加上模块名字puts "You have four weeks in a month"enddef Week.weeks_in_yearputs "You have 52 weeks in a year"end
end

再在主程序中的类中引用如下:

# 您可以在类中嵌入模块。为了在类中嵌入模块,您可以在类中使用 include 语句:
$LOAD_PATH << '.'
require "support" #可以不用加.rb

# 您可以在类中嵌入模块。为了在类中嵌入模块,您可以在类中使用 include 语句:
$LOAD_PATH << '.'
require "support" #可以不用加.rbclass Decade
include Week #引用其中的模块no_of_yrs=10def no_of_monthsputs Week::FIRST_DAYnumber=12*10puts numberend
endd1=Decade.new
puts Week::FIRST_DAY
Week.weeks_in_month #引入模块就把模块内的函数和字段当成自己的
Week.weeks_in_year
d1.no_of_months

三、Mixins代表了多重基础,Mixins不是关键字

# Ruby 中的 Mixins
# 当一个类可以从多个父类继承类的特性时,该类显示为多重继承。# Ruby 不直接支持多重继承,但是 Ruby 的模块(Module)有另一个神奇的功能。它几乎消除了多重继承的需要,提供了一种名为 mixin 的装置。
module Adef a1puts "sucess a1"enddef a2puts "sucess a2"end
endmodule Bdef b1puts "sucess b1"enddef b2puts "sucess b2"end
endclass Sample
include A
include Bdef s1puts "sucess s1"end
endsamp=Sample.new
samp.a1
samp.a2
samp.b1
samp.b2
samp.s1


Ruby语言基础学习六:Ruby模块、引用其他程序、Mixins相关推荐

  1. C语言指针基础知识点(六)--通过指针引用多维数组

    指针系列目录   C语言指针基础知识点(一)–指针及指针变量   C语言指针基础知识点(二)–指针变量的引用   C语言指针基础知识点(三)–指针变量作为函数参数   C语言指针基础知识点(四)–通过 ...

  2. 猿来小课web前端介绍html语言基础学习

    HTML是一种超文本标记语言,属于互联网开发技术里面的前端开发技术.同时也是计算机和你所访问的Web站点的沟通语言.当你访问Web服务器所寄存的站点并与其交互时,Web服务器会接收到来自你的浏览器的请 ...

  3. 01_Go语言基础学习_Golang语言特性、环境搭建、第一个Go程序、包

    1. Golang语言特性: 垃圾回收: 1.内存自动回收,再也不需要开发人员管理内存: 2.开发人员专注业务实现,降低了心智负担 : 3.只需要new分配内存,不需要释放 天然并发: 1.从语言层面 ...

  4. 《C语言基础学习笔记》—— 黑马程序员 <Part1-4>

    <C语言基础学习笔记 Part1-4> Part 1 基础介绍 1. 第一个C语言程序:HelloWorld 1.1 编写C语言代码:hello.c 1.2代码分析 1)include 头 ...

  5. java跳转控制语句有哪些_Java语言基础学习之流程控制语句和跳转控制语句实例分析...

    本文主要向大家介绍了Java语言基础学习之流程控制语句和跳转控制语句实例分析,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 一.流程控制语句 在一个程序执行的过程中,各条语句的执行顺 ...

  6. Python基础学习之 os 模块详解

    Python基础学习之 os 模块详解 文章目录 Python基础学习之 os 模块详解 1. 路径操作 1.1 os.chdir(),切换当前工作目录: 1.2 os.getcwd(),返回工作目录 ...

  7. C语言基础学习Day12(完结篇)

    C语言基础学习(Day12) 笔者有话说:         从Day1到Day12跟着笔者每天打卡到的朋友们,恭喜你们超前完成了C语言学习任务!

  8. C语言基础第六课——第二节if语句(if-else格式、不带else的if结构)、借例题简述写代码流程、从键盘上输入三个整数,求出其中的最大数(打擂法、三目运算符、排序)、if语句的嵌套计算个人所得税

    C语言基础第六课--第二节 一.if语句概述 二.标准if-else格式 三.借例题简述写代码流程 四.不带else的if结构 五.例题:从键盘上输入三个整数,求出其中的最大数.(打擂法.三目运算符. ...

  9. Boost:基于boost::asio模块引用计数程序

    Boost:基于boost::asio模块引用计数程序 实现功能 C++实现代码 实现功能 基于boost::asio模块引用计数程序 C++实现代码 #include <boost/asio. ...

最新文章

  1. java中产生指定范围内的随机数
  2. 5月,我面试了60多号人,写了些总结
  3. 华为、北大、悉尼大学:最新视觉Transformer综述(2017-2020年)
  4. float浮动的学习
  5. Android中的表格布局
  6. CodeForces - 1561E Bottom-Tier Reversals(构造)
  7. jdk解压版_命令行版的斗地主你玩过没?
  8. CVPR 2020 Workshop on Continual learning in Computer Vision 征稿
  9. 1090. Highest Price in Supply Chain (25) dfs
  10. Swift开发实例:苹果Swift编程语言新手教程中文版+FlappyBird,2048游戏源代码
  11. 第一周(7.11)作业——1、自我介绍;2、决心书
  12. java调用萤石对讲_海康萤石摄像头SDK Java(一)java本地调用摄像头
  13. 【011】Excel宏编程相关封装模块(新建文件、关闭文件、新增/删除工作薄)_004_#VBA
  14. 扒一扒那些叫欧拉的定理们(五)——平面几何欧拉定理的证明
  15. 树莓派制作游戏机教程
  16. SpringSecurity--记住我
  17. linux igb网卡,网卡驱动程序igb ixgbe
  18. 【MTK Front Camera Bringup】
  19. Grbl v1.1版本的编译方法
  20. POS机安全电路设计

热门文章

  1. 战斗回路的一键必杀宏,脚本设置
  2. 前端之HTML 文本、超链接
  3. 【jQuery动画】停止动画、淡入淡出、自定义动画
  4. 基于java的驾校管理系统
  5. 基因共表达网络分析java,基因共表达网络分析-WGCNA
  6. apk软件管理——玩转alpine linux
  7. 知哈希算法——找出相似的图片
  8. 基于FAST的TSN交换(2)基于FAST的TSN交换模型
  9. JavaSE——集合
  10. 5-ZooKeeper客户端使用