Ruby语言基础学习六:Ruby模块、引用其他程序、Mixins
新建一个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相关推荐
- C语言指针基础知识点(六)--通过指针引用多维数组
指针系列目录 C语言指针基础知识点(一)–指针及指针变量 C语言指针基础知识点(二)–指针变量的引用 C语言指针基础知识点(三)–指针变量作为函数参数 C语言指针基础知识点(四)–通过 ...
- 猿来小课web前端介绍html语言基础学习
HTML是一种超文本标记语言,属于互联网开发技术里面的前端开发技术.同时也是计算机和你所访问的Web站点的沟通语言.当你访问Web服务器所寄存的站点并与其交互时,Web服务器会接收到来自你的浏览器的请 ...
- 01_Go语言基础学习_Golang语言特性、环境搭建、第一个Go程序、包
1. Golang语言特性: 垃圾回收: 1.内存自动回收,再也不需要开发人员管理内存: 2.开发人员专注业务实现,降低了心智负担 : 3.只需要new分配内存,不需要释放 天然并发: 1.从语言层面 ...
- 《C语言基础学习笔记》—— 黑马程序员 <Part1-4>
<C语言基础学习笔记 Part1-4> Part 1 基础介绍 1. 第一个C语言程序:HelloWorld 1.1 编写C语言代码:hello.c 1.2代码分析 1)include 头 ...
- java跳转控制语句有哪些_Java语言基础学习之流程控制语句和跳转控制语句实例分析...
本文主要向大家介绍了Java语言基础学习之流程控制语句和跳转控制语句实例分析,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 一.流程控制语句 在一个程序执行的过程中,各条语句的执行顺 ...
- Python基础学习之 os 模块详解
Python基础学习之 os 模块详解 文章目录 Python基础学习之 os 模块详解 1. 路径操作 1.1 os.chdir(),切换当前工作目录: 1.2 os.getcwd(),返回工作目录 ...
- C语言基础学习Day12(完结篇)
C语言基础学习(Day12) 笔者有话说: 从Day1到Day12跟着笔者每天打卡到的朋友们,恭喜你们超前完成了C语言学习任务!
- C语言基础第六课——第二节if语句(if-else格式、不带else的if结构)、借例题简述写代码流程、从键盘上输入三个整数,求出其中的最大数(打擂法、三目运算符、排序)、if语句的嵌套计算个人所得税
C语言基础第六课--第二节 一.if语句概述 二.标准if-else格式 三.借例题简述写代码流程 四.不带else的if结构 五.例题:从键盘上输入三个整数,求出其中的最大数.(打擂法.三目运算符. ...
- Boost:基于boost::asio模块引用计数程序
Boost:基于boost::asio模块引用计数程序 实现功能 C++实现代码 实现功能 基于boost::asio模块引用计数程序 C++实现代码 #include <boost/asio. ...
最新文章
- java中产生指定范围内的随机数
- 5月,我面试了60多号人,写了些总结
- 华为、北大、悉尼大学:最新视觉Transformer综述(2017-2020年)
- float浮动的学习
- Android中的表格布局
- CodeForces - 1561E Bottom-Tier Reversals(构造)
- jdk解压版_命令行版的斗地主你玩过没?
- CVPR 2020 Workshop on Continual learning in Computer Vision 征稿
- 1090. Highest Price in Supply Chain (25) dfs
- Swift开发实例:苹果Swift编程语言新手教程中文版+FlappyBird,2048游戏源代码
- 第一周(7.11)作业——1、自我介绍;2、决心书
- java调用萤石对讲_海康萤石摄像头SDK Java(一)java本地调用摄像头
- 【011】Excel宏编程相关封装模块(新建文件、关闭文件、新增/删除工作薄)_004_#VBA
- 扒一扒那些叫欧拉的定理们(五)——平面几何欧拉定理的证明
- 树莓派制作游戏机教程
- SpringSecurity--记住我
- linux igb网卡,网卡驱动程序igb ixgbe
- 【MTK Front Camera Bringup】
- Grbl v1.1版本的编译方法
- POS机安全电路设计