require,include,load,extend的用途和区别

[ruby]class、moduleinclude、prepend、extendrequireload、gem 1. class 定义实例方法时,与module想比,一般定义calss就行,有时需要区分名称的时候可以用module的命名空间功能 2. module 定义只有类方法的数据类型时,倾向使用模块而不是类。只有当需要实例化时才使用类 # 差 class SomeClass def self.some_method # 省略主体 end def self.some_other_method # 省略主体 end end # 好 module SomeModule 阅读详情
   这四个方法还是很好玩很有用,也是比较容易混的。

 1.require( aString ) -> true or false

   Ruby试图载入一个名为aString的库,如果成功了就返回true,否则返回false。如果给定的值不是一个绝对路径,那么将会在$:中查找。如果给定的名字带有.rb,则作为源文件载入;如果扩展名为.so,.o,.dll等(根据不同平台),Ruby将这些作为扩展程序来载入;否则,Ruby会自动尝试在给定的文件名后面加.rb,.so,.dll等。已经载入的库会放到数组$"中,已经在$"里的则不会被重复装载。比如:

 

require "my-library.rb"

require "db-driver"

 

 

2.load( aFileName, wrap=false ) -> true

 

装载并执行aFileName文件,文件搜索方法同上面的require。wrap是可选参数,默认为false,如果设为true,则这个文件将在匿名模块下运行,从而包括调用者的名字空间。任何aFileName里面的局部变量在装载它的环境下是不可用的。

 

3.include

include主要用来将一个模块插入(mix)到一个类或者其它模块。这个模块的方法在引入它的类或模块中以函数的形式调用(没有一个receiver)。这个指令运行时会执行Module.append_features方法。

 

 

4.extend

extend 用来在一个对象(object,或者说是instance)中引入一个模块,这个类从而也具备了这个模块的方法。

 

module Mod

  def hello2

    "Hello from Mod.n"

  end

end

 

class Klass

  def hello

    "Hello from Klass.n"

  end

end

 

k = Klass.new

k.hello   #"Hello from Klass.n"

k.hello2  # NoMethodError: undefined method `hello2' …

k.extend(Mod)   #<0x2e4c530></0X2E4C530>

k.hello  #"Hello from Mod.n"

 

 

 

include,require,load,extend区别 requireload的作用是相同的,都是用来加载指定的类库,区别在于,require可以载入某个a.rb文件,并且可以省略.rb的后缀,并且,require只会在第一次的时候加载,如果以后再require的话,则不会加载。load的作用require相同,区别在于,load在加载指定文件的时候必须用全名,不能省略后缀,而且,load每次都会重新加载,并不像require那样,只加载一次以后就... 阅读详情

相关推荐

nodejs extend

Object.assign只能实现后面对象的第一级属性拷贝的前面的对象中,如果需要深度拷贝属性,需要依赖extend包 参考文档https://github.com/justmoon/node-extend npm install extend如下将输出 {“userName”:{“first”:”C”,”second”:”B”},”age”:2}const extend = require(

ISaiSai的专栏 4167

js 深拷贝对象库

const extend = require('extend2'); // for deep clone extend(true, {}, object1, objectN);

sun 796

关于includeload的几个问题

参考:http://www.network-theory.co.uk/docs/gccintro/gccintro_17.html 1. include的文件在哪找,找不到会如何?   工具:gcc -H -fsyntax-only test.c 用“”引入的话,首先在当前目录查找,然后在系统目录查找;使用<>引入的话,直接在系统目录查找。 首先研究#include...

weixin_30687811的博客 277

【UML】用例图中IncludeExtend到底如何区分

前言: 今天在看UML中用例图的时候,发现之前总结的博客有一些理解上的问题,确实includeextend有很大的区别,今天通过深入的学习,现在已经纠正以前的错误了,接下来大家我一起看看这二者之间到底是怎么的一种存在吧! 1、简单语言区分 1、之前《include》的学习误区 大家都知道include的中文意思是包含的意思,我最初的理解就是一个用例包含另一个用例!二者之间就是单单的包含关系就行...

李光 未来科技 4万+

Ruby Require VS Load VS Include VS Extend

Ruby Require VS Load VS Include VS Extend Here are the differences between Require, Load, Include and Extend methods: Include When you Include a module into your class as shown below, it’s as

emerald0106的专栏 538

Rubyrequire,load,include,extend区别

require,load用于文件,如.rb等等结尾的文件。include,load则用于包含一个文件中的模块。require 一般情况下用于加载库文件,而load则用于加载配置文件。 1 require:加载一个库,并且只加载一次,如果多次加载会返回false。只有当要加载的库位于一个分离的文件中时才有必要使用require。使用时不需要加扩展名,一般放在文件的最前面:requi...

weixin_30548917的博客 83

require,load,include,extend的显著区别

Orzak的博客 1140

Rubyrequire,load,includeextend方法的区别

原文:Ruby Require VS Load VS Include VS Extendinclude如下例当Include一个模块到某个类时, 相当于把模块中定义的方法插入到类中。Include一个模块实际上相当于将其mixin到某个类中。它遵循 DRY(Don’t repeat yourself)原则, 避免重复。例如,当有多个类需要引入模块中的同一段代码时。下例假设Log模块TestClas

ミ安之偌素 1287

Rails中requireloadincludeextend区别

以下是对:requireloadincludeextend区别: 1)、require方法是加载一个文件,只加载一次,如果多次加载会返回false,一般在使用require加载一个文件的时候不需要加扩展名。如要加载test.rb文件时,require ‘test’。 2)、load方法跟require方法类似,也是加载一个文件,但是也有不同,就是它可以多次加载,而且必须制定扩展

Ucooling 1777

rubyload,require以及include,extend区别

Load require区别: 二者的作用相似,都可以加载并执行指定的ruby源代码文件(立即执行),但是requireload常用。 test.rb: puts " I am a developer!" execute.rb: require "./test" #load "./test.rb" puts " You are also a developer

xing102172的专栏 699

ruby include require load extend区别

ruby include require load extend区别 —–require/load—— 在功能上requireload都是用来导入文件的. 区别如下: require 用来加载库, 既然是用来加载库, 那么文件的扩展名就可以省略了, 同时又因为是加载的库, 所以会先检查是否重复加载, 如果未加载, 则再进行加载. 如果已加载, 则不加载. load 用来加载文件. ...

lzp13629752595的博客 320

Ruby 中的$LOAD_PATH,Require,Load,IncludeExtend介绍

Ruby 中的RequireLoadIncludeExtend介绍   在介绍具体的方法之前,首先介绍一下ruby中的全局变量$LOAD_PATH,$LOAD_PATH是Ruby读取外部文件的一个环境变量,其实windows的环境变量是一个概念。值为由路径组成的数组,Ruby会在这个环境变量的路径中读取需要require的文件,如果在环境变量中找不到自己想要的文件,就会报LoadErr

Rclibin的专栏 1649

RubyRequireLoadIncludeExtend区别

       最近在写一些能够随意引用的包,用到了includerequire等饮用方法,在此总结一下RequireLoadIncludeExtend区别。   Requirerequire方法让你加载一个库,并且只加载一次,如果你多次加载会返回false。只有当你要加载的库位于一个分离的文件中时才有必要使用require。使用时不需要加扩展名,一般放在文件的最前面: r...

iteye_5218的博客 224
上一篇: 创建名字空间(namespaces)
下一篇: wxRuby 0.6.0 发布
ruby_cn
博客等级 码龄22年 23粉丝 46原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值