- 浏览: 1381930 次
- 性别:
- 来自: 陕西.西安
文章分类
最新评论
-
dare_:
经过试验 设置之后反而更慢没有调用ensureCapacity ...
ensureCapacity()方法提高ArrayList的初始化速度 -
wangchao9053:
[flash=200,200][url][img][list] ...
Only the original thread that created a view hierarchy can touch its views的相关 -
cyb504:
考虑将rb文件代码隐藏:我先使用命令jrubyc将所有rb文件 ...
Ruby学习十 JRuby中调用java代码 -
4562xse3460:
大哥,您这个写反了,差点误导我,我觉得看着就不对。百度第一条就 ...
portrait表示纵向,landscape表示横向 -
yin138:
portrait是肖像画,即竖屏,landscape是风景画, ...
portrait表示纵向,landscape表示横向
http://t.chinaunix.net/viewthread.php?tid=1828498
我今天测试了一下:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
#find 找出符合条件的第一个元素,返回该元素
#find_all,select 找出符合条件的所有元素,返回结果也是数组
array=[6,1,2,3,4,5]
p array.find{|a| a>2} # 6
p array.find_all{|a| a>2} # [3, 4, 5]
p array.select{|a| a > 2} # [3, 4, 5]
#find_all,select 找出符合条件的所有元素,返回结果也是数组
array=[6,1,2,3,4,5]
p array.find{|a| a>2} # 6
p array.find_all{|a| a>2} # [3, 4, 5]
p array.select{|a| a > 2} # [3, 4, 5]
注意代码块:a > 2,相当于 if 的条件。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
1. 如何创建数组? 最简单的,x=[]将创建一个空数组: QUOTE:
irb(main):004:0> x = []
=> [] 另外还可以使用标准的new方法,任何数组都是Array类的实例。 QUOTE:
irb(main):001:0> x = Array.new
=> [] irb(main):002:0> x = Array.new(3) => [nil, nil, nil] irb(main):003:0> x = Array.new(3,"a") => ["a", "a", "a"] 上述第一个创建空数组,第二个创建预设SIZE的数组,第三个创建预设SIZE和值的数组。 跟Hash一样,第三种方法填充的预设值,都指向同一个目标。 任何一个位置的目标改变了,都影响所有元素的值: QUOTE:
irb(main):005:0> x = Array.new(3,"a")
=> ["a", "a", "a"] irb(main):006:0> x[0] << "b" => "ab" irb(main):007:0> x => ["ab", "ab", "ab"] 创建的数组,每个元素都是唯一目标,要这样做: QUOTE:
irb(main):008:0> x = Array.new(3) do |e| e = "a" end
=> ["a", "a", "a"] irb(main):009:0> x[0] << "b" => "ab" irb(main):010:0> x => ["ab", "a", "a"] 当然还可以如下创建数组: QUOTE:
irb(main):012:0> x = Array.[](1,2,3)
=> [1, 2, 3] irb(main):013:0> x = Array[1,2,3] => [1, 2, 3] 不过很少使用,不如x=[1,2,3]来的简洁方便。 2. 如何访问数组? 使用数组下标: QUOTE:
irb(main):014:0> x = [3,2,1,4]
=> [3, 2, 1, 4] irb(main):015:0> x[0] => 3 irb(main):016:0> x[-1] => 4 0表示第一个元素,-1表示最后一个元素,其他类推。 还有first和last方法: QUOTE:
irb(main):017:0> x.first
=> 3 irb(main):018:0> x.last => 4 first和last可以带一个整数参数,表示返回首尾多少个元素。 遍历数组使用each方法: QUOTE:
irb(main):024:0> x.each do |s| puts s end
1 2 3 => [1, 2, 3] 3. 数组的slice? 数组的slice可以对数组切片,返回指定位置和长度的片段。 QUOTE:
irb(main):021:0> x[0,2]
=> [3, 2] irb(main):022:0> x[0..2] => [3, 2, 1] irb(main):023:0> x[0...2] => [3, 2] 第一个表述从0位置开始切片,长度为2,返回2个元素。 第二个表示从0位置开始切片,到2位置结束,返回3个元素。 第三个表示从0位置开始切片,到2位置结束,但是不包括最后一位,返回2个元素。 4. 如何修改数组? 数组有push和<<方法,表示添加元素到数组尾部: QUOTE:
irb(main):024:0> x = [3,2,1,4]
=> [3, 2, 1, 4] irb(main):025:0> x.push(5) => [3, 2, 1, 4, 5] irb(main):026:0> x << 6 => [3, 2, 1, 4, 5, 6] pop方法表示从尾部删除元素,shift表示从首部删除元素: QUOTE:
irb(main):027:0> x.pop
=> 6 irb(main):028:0> x.shift => 3 对应的有unshift方法,表示从首部添加元素: QUOTE:
irb(main):029:0> x.unshift(0)
=> [0, 2, 1, 4, 5] 数组的insert方法可以在指定位置插入元素: QUOTE:
irb(main):053:0> x
=> [1, 2, 3] irb(main):054:0> x.insert(1,5) => [1, 5, 2, 3] 当然delete和delete_at方法可以删除对应的元素。 delete_at的参数是数组索引: QUOTE:
irb(main):021:0> x.delete_at(1)
=> 5 5. 数组的加减操作? ruby很灵活,任何目标都可以定义自己的方法。 数组就定义了加减方法(当然还有乘除,不过很少使用)。 QUOTE:
irb(main):031:0* x = [1,2,3]
=> [1, 2, 3] irb(main):032:0> y = [4,5,6] => [4, 5, 6] irb(main):033:0> z = x + y => [1, 2, 3, 4, 5, 6] irb(main):034:0> z - x => [4, 5, 6] 所谓加就是把两个数组合并起来,所谓减就是把相同的元素排除掉。 而且这个减似乎不在意元素顺序: QUOTE:
irb(main):043:0> x
=> [1, 2, 3] irb(main):044:0> a => [3, 2, 1] irb(main):045:0> x-a => [] 6. 求唯一数组? 在ruby里这个很方便,用uniq方法: QUOTE:
irb(main):046:0> x = [1,2,3,3,2,1]
=> [1, 2, 3, 3, 2, 1] irb(main):047:0> x.uniq => [1, 2, 3] 当然x.uniq!这样加个叹号,表示毁坏性方法,不返回而是直接改变x目标自身。 7. 数组的比较? 可以直接用==进行比较: QUOTE:
irb(main):048:0> x = [1,2,3]
=> [1, 2, 3] irb(main):049:0> y = [3,2,1] => [3, 2, 1] irb(main):050:0> x == y => false irb(main):051:0> a = [1,2,3] => [1, 2, 3] irb(main):052:0> x == a => true 8. 数组的类型转换? 数组可以转换成串,使用to_s或者join方法: QUOTE:
irb(main):001:0> x=[1,2,3,4]
=> [1, 2, 3, 4] irb(main):002:0> x.to_s => "1234" irb(main):003:0> x.join "-" => "1-2-3-4" 串也可以转换成数组: QUOTE:
irb(main):012:0> str="1 2 3 4"
=> "1 2 3 4" irb(main):013:0> str.to_a => ["1 2 3 4"] 这可能不是你想要的,那么执行: QUOTE:
irb(main):018:0> str.split(/ /).map {|s| s.to_i}
=> [1, 2, 3, 4] Hash可以直接转换成二维数组: QUOTE:
irb(main):010:0> hash={1=>2,3=>4}
=> {1=>2, 3=>4} irb(main):011:0> hash.to_a => [[1, 2], [3, 4]] 数组可以转换成hash,见我前一篇帖子。 9. 如何查找数组元素? QUOTE:
irb(main):034:0> x = [3,2,1,4,4]
=> [3, 2, 1, 4, 4] irb(main):032:0> x.include? 4 => true irb(main):035:0> x.find do |s| s == 4 end => 4 irb(main):036:0> x.select do |s| s == 4 end => [4, 4] include?判断是否包含该元素,返回true或false。 find找出符合条件的一个元素,返回该元素。 select找出符合条件的所有元素,返回结果也是数组。 10. 数组的排序? 使用sort: QUOTE:
irb(main):049:0> x = [3,1,4,0,1]
=> [3, 1, 4, 0, 1] irb(main):050:0> x.sort => [0, 1, 1, 3, 4] irb(main):052:0> x.sort.reverse => [4, 3, 1, 1, 0] 还有sort_by方法,接受一个block作为参数,按照指定规则进行排序。 11. 其他实用数组方法? 展开数组: QUOTE:
irb(main):025:0> x = [1,2,3,[0,1,2]]
=> [1, 2, 3, [0, 1, 2]] irb(main):026:0> x.flatten => [1, 2, 3, 0, 1, 2] 清空数组: QUOTE:
irb(main):027:0> x.clear
=> [] 替换数组: QUOTE:
irb(main):028:0> x.replace [3,2,1]
=> [3, 2, 1] 合并数组: QUOTE:
irb(main):030:0> x.concat [1,2,3]
=> [3, 2, 1, 1, 2, 3] 12. 数组的inject方法? QUOTE:
irb(main):044:0> x = [1,2,3,4]
=> [1, 2, 3, 4] irb(main):045:0> x.inject(0){|sum, item| sum += item} => 10 inject的参数0表示初始化sum,item表示遍历每一个元素,在block里不断自加,最后返回累计加值。 QUOTE:
irb(main):047:0> x.inject([]){|new, item| new << -item}
=> [-1, -2, -3, -4] 上述inject作用,表示取数组的每个元素的负值,返回一个新数组。当然用map更简洁: QUOTE:
irb(main):048:0> x.map {|item| -item}
=> [-1, -2, -3, -4] map的item也表示遍历数组元素,对元素进行计算后,返回一个结果数组。 |
发表评论
-
rsync参数详解、利用ssh、rsync 实现数据的定时同步
2012-09-11 14:52 1704http://colderboy.blog.51cto.com ... -
putty
2011-12-02 10:50 1120http://www.iteye.com/topic/5606 ... -
haml
2011-12-01 22:53 1141http://aideehorn.iteye.com/blog ... -
ruby 生成随机数 和 随机字符串
2011-11-30 22:42 3536ruby 生成随机数 和 随机字符串 1,ra ... -
ruby and watir学习之_Hash 类
2011-11-20 17:53 1655http://www.cnblogs.com/zhangfei ... -
gem相关命令使用
2011-11-19 00:01 2852http://www.cnblogs.com/orez88/a ... -
Rails,启动-重要
2011-11-17 09:59 1792http://www.blogjava.net/sshwsfc ... -
使用 RSpec 进行行为驱动测试,配置分析
2011-11-11 13:21 1589http://huangzhimin.com/ < ... -
ruby的class与module的区别
2011-11-07 10:04 2371http://blog.163.com/rettar@126/ ... -
ruby invalid multibyte char (US-ASCII)
2011-11-05 01:57 4693要加上: # encoding: utf-8 一般要 ... -
File.split(pathname)
2011-11-05 01:42 2247http://www.kuqin.com/rubycndocu ... -
Ruby怎样获取操作系统的Name
2011-11-05 01:30 1293http://bbs.chinaunix.net/thr ... -
Ruby String#unpack
2011-10-31 11:34 1299http://fuliang.iteye.com/blog/6 ... -
ruby环境变量的文件读取形式
2011-10-31 11:29 1860http://blog.csdn.net/normallife ... -
Ruby学习九 排序 sort
2011-10-26 20:06 3582h = ['1','10','11','2','4']A. p ... -
关于rails插件will_paginate的配置和用法
2011-10-26 15:56 4378http://selfcontroller.iteye.com ... -
ruby 中的 && ,|| ,!! (转)
2011-10-26 14:59 966http://selfcontroller.iteye.com ... -
Ruby中 respond_to? 和 send 的用法 .
2011-10-26 14:19 5362http://selfcontroller.iteye.com ... -
ruby 在线正则表达式 编辑器
2011-10-25 09:22 1751http://www.rubular.com/ -
ruby-Jruby,Xruby 转
2011-10-25 09:22 891ruby-Jruby,Xruby 2009年06月21 ...
相关推荐
今天学习的是数组和Hash,数组在很多编程语言中都能常常用到。 数组: 数组是存储数据的一种容器,在Ruby中,数组中存储的数据可以是任何类型的数据;这和JAVA不同,在JAVA中,数组是存储同一类型数据的结构。 1. 在...
Ruby中的数组是动态数组,存储的数据不用限定类型,数组的长度是根据存储需要动态扩展,所以,在进行数据定义的时候,只用用最简单的方式new一个Array对象就可以了,可以使用以下几种方式: 代码如下: arr1=[] #最...
"Ruby新手学习书"和"Rails_4_days"这两个资源是为初学者设计的,旨在帮助他们快速掌握Ruby语言的基础以及Rails框架的核心概念。 在Ruby语言中文教程中,你将学到以下关键知识点: 1. **基础语法**:Ruby的语法简洁...
在学习Ruby的过程中,你还需要了解一些工具,如Ruby的解释器irb(交互式Ruby环境)和ri/rdoc(Ruby文档工具),它们有助于调试和理解代码。版本管理工具如RVM(Ruby Version Manager)和rbenv可以帮助你管理多个Ruby...
1. **创建数组**:Ruby数组的创建非常直观,只需在方括号`[]`内列出元素,并用逗号隔开即可。例如,`ary = [1, 2, "3"]` 创建了一个包含整数和字符串的数组。 2. **数组操作**:数组支持数学运算,如加法和乘法。...
本"Ruby学习指南"旨在帮助初学者快速掌握Ruby的基础知识,同时也为有一定经验的开发者提供深入学习的资源。 1. **Ruby基础** - 变量:Ruby有五种变量类型,包括局部变量、实例变量、类变量、全局变量和常量,它们...
Ruby的数组可以通过转换为Hash,但这要求数组必须包含偶数个元素。具体操作时,使用星号(*)操作符配合Hash构造函数可以实现数组到Hash的转换。 在Ruby的方法中,如果方法名末尾带有感叹号(!),表示该方法会改变原有...
数组是一系列有序的元素集合,可以存储不同类型的元素,如`[1, "two", true]`;哈希则由键值对组成,如`{name: "John", age: 30}`。 在控制结构方面,Ruby提供了条件语句,如`if...else`和`case...when`,以及循环...
本书面向希望学习Ruby语言的初学者以及已经有一定编程基础但想深入了解Ruby特性的开发者。 - **风格**:本书采用实战导向的方式进行讲解,旨在通过实践让读者掌握Ruby的核心概念和技术。 - **目标读者**:适合对Ruby...
从给定的文件信息中,我们可以提炼出一系列关于Ruby编程语言的重要知识点,涵盖基础语法、变量类型、...以上总结了Ruby的一些基础知识点,这些内容对于初学者掌握Ruby编程语言至关重要,同时也是进一步深入学习的基石。
1. **Ruby Map**: Map函数允许我们将一个操作应用到数组或集合中的每一个元素上,然后返回一个新的数组,包含应用操作后的结果。例如,如果你有一个数组包含数字,你可以用map来将每个元素平方: ```ruby numbers...
### Programming Ruby 1.9 3rd Edition:深入探索Ruby编程语言 #### 一、书籍概览 《Programming Ruby ...通过学习本书,读者将能够更好地理解Ruby的核心概念,并能够利用这些知识来构建高效、可靠的Ruby应用程序。
1. **块参数解构**:Ruby 3.1引入了一种新的语法,允许在块参数中使用解构赋值,使得处理数组或哈希更加方便。例如,`yield [a, b], {c: d}`可以直接将数组和哈希解构为单独的变量。 2. **Symbol to_proc的优化**:...
这个笔记里包含了ruby的整型,字符串,浮点数,布尔等基础数据类型,还有数组,哈希hash的用法, 类的定义,函数方法,以及对象定义,其他高级用法解释,除了笔记记录的语法糖之外,还包含了一些解释性的代码,帮助...
### Ruby语言中的冒泡排序算法 #### 知识点一:冒泡排序基本概念 ...通过对这些知识点的学习,读者可以更好地理解和掌握如何在 Ruby 中实现冒泡排序,并为进一步学习其他更复杂的排序算法打下坚实的基础。
此外,你还会学习到Ruby的模块系统,它是组织代码和实现命名空间的一种方式。 Ruby的块(blocks)和 Proc 对象是其独特之处,它们提供了简洁的回调函数和迭代器。书中会深入解释这些概念,并通过实例展示它们在实际...
此外,Ruby的块(Block)和 Proc 对象让函数式编程变得简单,例如使用`each`方法遍历数组: ```ruby fruits = ["Apple", "Banana", "Cherry"] fruits.each { |fruit| puts fruit } ``` 元编程是Ruby的另一个强大特性...