clone和dup

ruby中clone和dup都是对一个对象的浅拷贝,其区别如下:

1.clone会拷贝单例方法,而dup不会。
a = Object.new
def a.hello
    "hello"
end

a.dup.hello   # raises NoMethodError
a.clone.hello # return "hello"

2.dup不能对frozen状态的对象进行拷贝,而clone可以
时间: 2024-12-28 02:06:20

clone和dup的相关文章

移动端左右滑动插件

前几天决定写一个基于jQuery的移动端大跨度滑动插件,大致可以设置的参数有: num: 3, //Wrap内子元素个数, >0 index: 0, //初始化索引值 initX: 10, //X轴滑动大于此属性触发事件 U.px limitX: 30, //X轴滑动大于此属性触发滑动 U.px limitY: 70, //Y轴滑动大于些属性禁止滑动 U.px speed: 300, //滚屏速度, 值越大越慢 U.ms [>=0 && <=1] edgeSlideVal

ruby中的复制 dup clone

Ruby内置的方法Object#clone和Object#dup可以用来copy一个对象,两者区别是dup只复制对象的内容,而clone还复制与对象相关联的内容,如singleton method[ruby] view plaincopyprint?s = "cat" def s.upcase "CaT" end s_dup = s.dup s_clone = s.clone s_dup.upcase #=> "CAT" (singleto

实现一个函数clone,使JavaScript中的5种主要的数据类型(包括Number、String、Object、Array、Boolean)进行值复制

实现一个函数clone,可以对JavaScript中的5种主要的数据类型(包括Number.String.Object.Array.Boolean)进行值复制. 1 /** 对象克隆 2 * 支持基本数据类型及对象 3 * 递归方法 */ 4 function clone(obj) { 5 var o; 6 switch (typeof obj) { 7 case "undefined": 8 break; 9 case "string": o = obj + &q

git clone失败

git clone失败,提示输入的密码错误,执行以下两步 1. 重新生成ssh 在命令行执行命令:ssh-keygen -t rsa -C "[email protected]" 邮箱要输入自己的地址 2. 把生成的 ~/.ssh/id_rsa.pub 公共密钥添加到git网站上 记住要全部复制!

java中的clone()

什么是"clone"? 在实际编程过程中,我们常常要遇到这种情况:有一个对象A,在某一时刻A中已经包含了一些有效值,此时可能 会需要一个和A完全相同新对象B,并且此后对B任何改动都不会影响到A中的值,也就是说,A与B是两个独立的对象,但B的初始值是由A对象确定的.在 Java语言中,用简单的赋值语句是不能满足这种需求的.要满足这种需求虽然有很多途径,但实现clone()方法是其中最简单,也是最高效的手段. Java的所有类都默认继承java.lang.Object类,在java.lan

Java clone()深拷贝、浅拷贝

Cloneable接口是一个空接口,仅用于标记对象,Cloneable接口里面是没有clone()方法,的clone()方法是Object类里面的方法!默认实现是一个Native方法 protected native Object clone() throws CloneNotSupportedException; 如果对象implement Cloneable接口的话,需要覆盖clone方法(因为Object类的clone方法是protected,需要覆盖为public) public Obj

Oracle 学习之 11g Clone 安装

如果你需要安装的数据库服务器比较多,使用图形化方式安装数据库软件的速度还是很慢,而且也比较麻烦.Oracle 11g 提供了Clone安装的方法. 步骤如下: 使用正常方法在服务器A上安装好Oracle. 将A机器上的$ORACLE_HOME打包,db_home1.zip . 将B机器的环境准备好,如建立用户.建立用户.修改内核参数,修改环境变量等等. 将zip包copy到B服务器,解压到任意目录. 执行Clone命令 A机器上打包 [[email protected] oracle]# zip

深度clone

1.之前在javascript的设计模式里面看到过,但是没有仔细去分析 2.下面的是一个例子(一种深度clone的写法): if (Obj instanceof Array) { buf = []; //创建一个空的数组 var i = Obj.length; while (i--) { buf[i] = clone(Obj[i]); } return buf; www.2cto.com }else if (Obj instanceof Object){ buf = {}; //创建一个空对象

UNIX环境编程学习笔记(4)——文件I/O之dup复制文件描述符

lienhua342014-08-23 UNIX 提供了两个函数 dup 和 dup2 用于复制一个现存的文件描述符. #include <unistd.h> int dup(int filedes); int dup2(int filedes, int filedes2); 返回值:若成功则返回新的文件描述符,如出错则返回-1. 由 dup 函数返回的文件描述符一定是当前可用文件描述符中的最小描述符.用 dup2 函数则可以通过参数 filedes2 指定目标文件描述符.如果filedes2