0 0

ruby数组小问题15

>> a=[1,2,3]
=> [1, 2, 3]
>> b=a
=> [1, 2, 3]
>> b.delete(1)
=> 1
>> b
=> [2, 3]
>> a
=> [2, 3]


这怎么回事?我想保存a作为副本,为什么操作b后,a的值也变了
问题补充:
这个现象我已经观测到了,我想问问有没什么方法,保存数组副本,谢谢!
除了这个比较弱的方法
a='1,2,3'
b=a.split(',')
b.delete(1)

>> a
=> '1,2,3'
>> b
=> [2,3]
2009年1月30日 21:39

3个答案 按时间排序 按投票排序

0 0

采纳的答案

PS:通过赋值数组元素到达值拷贝。

2009年1月30日 23:44
0 0

引用
这个现象我已经观测到了,我想问问有没什么方法,保存数组副本,谢谢!
除了这个比较弱的方法
a='1,2,3'
b=a.split(',')
b.delete(1)

>> a
=> '1,2,3'
>> b
=> [2,3]

a=[1,2,3]
b=[a[0],a[1],a[2]]
b.delete(1)

>>a
=>[1,2,3]
>>b
=>[2,3]

2009年1月30日 23:43
0 0

引用
这怎么回事?我想保存a作为副本,为什么操作b后,a的值也变了

因为将b=a,实际上是将b和a指向同一个对象,操作b就是操作a。如果只是进行值拷贝,相当于Java里面的deep copy,要采用其它的办法。

2009年1月30日 22:33

相关推荐

    10Ruby 数组.docx

    ### Ruby 数组详解 #### 一、Ruby 语言概述 Ruby 是一种动态、面向对象的高级编程语言,以其简洁明了的语法而闻名。它强调程序员的生产力与代码的可读性,被誉为“程序员最好的朋友”。Ruby 具备强大的元编程能力,...

    ruby 数组处理大全.doc

    ruby数组处理大全 如函数名称 说明 示例 &数组与,返回两数组的交集 [1,2] & [2,3] =>[2] *复制数组n次 [1,2]*2 => [1,2,1,2] +返回两数组的并集,但不排除重复元素 [1,2]+[2,3] =>[1,2,2,3] 追加元素,但不...

    ruby数组

    在Ruby数组中,元素可以通过索引来访问和操作,索引通常从0开始。 ### 数组创建 Ruby提供多种创建数组的方法。最常见的是通过方括号`[]`来创建,例如: ```ruby arr = [1, 2, 3, "four", true] # 创建包含不同类型...

    Ruby数组(Array)学习笔记

    Ruby中的数组是动态数组,存储的数据不用限定类型,数组的长度是根据存储需要动态扩展,所以,在进行数据定义的时候,只用用最简单的方式new一个Array对象就可以了,可以使用以下几种方式: 代码如下: arr1=[] #最...

    array size (数组大小测量)2.zip_数组大小测量

    同时,数组过大可能导致内存浪费,过小可能限制程序功能,因此,合理估计和调整数组大小是优化程序性能的关键。 在实际编程中,我们还需要考虑到动态数组(如Java和Python的ArrayList和List,JavaScript的Array等)...

    ruby 数组使用教程

    下面我们将深入探讨Ruby数组的各种操作。 1. **创建数组**:Ruby数组的创建非常直观,只需在方括号`[]`内列出元素,并用逗号隔开即可。例如,`ary = [1, 2, "3"]` 创建了一个包含整数和字符串的数组。 2. **数组...

    Ruby中数组的一些相关使用方法

    Ruby数组是有序的,任何对象的??整数索引的集合。每个数组中的元素相关联,并提到的一个索引。 数组下标从0开始,如C或Java。负数索引假设数组末尾—也就是说,-1表示最后一个元素的数组索引,-2是数组中最后一个...

    Ruby创建数组方法总结

    程序经常需要管理变量集合。例如,管理日历的程序必须有一周的天数列表。每天必须存储在一个变量中,它们的列表可以存储在一个数组变量中。通过这个数组变量,您可以访问.../usr/bin/env ruby array = Array.new 3.time

    Ruby简明教程之数组和Hash介绍

    数组是存储数据的一种容器,在Ruby中,数组中存储的数据可以是任何类型的数据;这和JAVA不同,在JAVA中,数组是存储同一类型数据的结构。 1. 在Ruby中如何定义数组呢? 使用[ ]来框住元素,而元素之间则使用”,”...

    binary_search:用于Ruby数组的本机和纯Ruby二进制搜索和索引方法

    二进制搜索Ruby的数组 二进制搜索是Ruby的Array类中缺少的一种非常方便的算法。 如果我们知道绝对肯定的是,我们正在与正在工作的数组排序,你可以使用二进制搜索通过数组得多的速度远远超过线性搜索,这与指数进行...

    ruby小程序

    Ruby小程序,即用Ruby语言编写的小规模程序或工具,通常是为了解决特定问题或实现特定功能而设计的。 Ruby的核心特性包括: 1. 面向对象:Ruby是一种纯面向对象的语言,每一个数据类型都是一个对象,包括基本类型...

    Ruby中的数组和散列表的使用详解

    Ruby的数组(arrays)和散列表(hashes)是被索引的收集(indexed collections). ...有了数组对象,在方括号之间提供索引便可以访问单个元素,如下例所示,注意Ruby数组的索引从零开始。 a=[1,'cat',3.14] #有三个元

    Ruby-ActiveModel的自定义验证用于检查数组是否包含在另一个中

    这个标题提到的"Ruby-ActiveModel的自定义验证用于检查数组是否包含在另一个中"是一个具体的验证场景,常常在数据校验时会用到,比如确保用户输入的数据符合特定的范围或者限制。 自定义验证是ActiveModel的一个...

    Ruby Data-Processing ruby数据处理

    阅读《Ruby Data-Processing》这本书,你将能够深入了解如何利用这些工具解决实际的数据处理问题。书中可能涵盖了如何在不同的场景下运用Map、Reduce和Select,如何优化代码性能,以及如何处理复杂的数据结构等主题...

    Ruby资源ruby-v3.1.1.zip

    1. **块参数解构**:Ruby 3.1引入了一种新的语法,允许在块参数中使用解构赋值,使得处理数组或哈希更加方便。例如,`yield [a, b], {c: d}`可以直接将数组和哈希解构为单独的变量。 2. **Symbol to_proc的优化**:...

    ruby 标准库

    在Ruby的标准库中,`Array`类提供了丰富的实例方法和类方法来处理数组。 ##### 1.1 Class methods **1.1.1 []** 用于创建一个新的数组。例如: ```ruby arr = [1, 2, 3] ``` **1.1.2 new** 创建一个新数组。...

    Ruby自学笔记

    Ruby的字符串字面量构造使用了“小单大双”的规则,其中%q代表单引号字符串,而%Q和%代表双引号字符串。当需要在字符串中嵌入变量或表达式时,可以使用双引号字符串配合#{...}的格式。使用%w和%W可以创建单引号或双...

    笨办法学ruby_笨办法学ruby_ruby_bravevk4_

    这种“做中学”的方法有助于提高问题解决能力,因为编程往往需要面对实际问题并找出解决方案。 Ruby社区活跃,有丰富的第三方库,如Rails框架,使得Ruby在Web开发领域占有重要地位。虽然本书可能不会深入到框架的...

Global site tag (gtag.js) - Google Analytics