0 0

请问:Ruby中关于Array的一个问题5

a=[3,a,3,f,e,3,6,3,3]


怎么做才返回a中的所有3的索引
2009年2月07日 14:11

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

0 0

上面代码里对s的赋值也是冗余的……

如果不对s赋值结果会出现错误!

使用ruby 1.8.7/1.9.1测试的,没用1.8.6试过

2009年2月22日 08:19
0 0

一行代码
[3,'a',3,'f','e',3,6,3,3].each_with_index.inject([]) {|s,k| s = (k[0] == 3 ? s << k[1] : s)}  #=> [0, 2, 5, 7, 8]
这个得要Ruby 1.9.x才行,1.8.x里的Array#each_with_index必须直接跟有block所以没办法直接连上inject。
上面代码里对s的赋值也是冗余的……

[3,'a',3,'f','e',3,6,3,3].each_with_index.inject([]) {|s,k| k[0] == 3 ? s << k[1] : s}

2009年2月20日 17:58
0 0

一行代码
[3,'a',3,'f','e',3,6,3,3].each_with_index.inject([]) {|s,k| s = (k[0] == 3 ? s << k[1] : s)}  #=> [0, 2, 5, 7, 8]

2009年2月17日 18:39
0 0

办法好多……例如说上面两位的办法的变体可以是

def find_indices_with(ary)
  result = []
  ary.each_with_index { |val,idx| result << idx if yield val }
  result
end

find_indices_with([3,'a',3,'f','e',3,6,3,3]) {|i| 3 == i}
#=> [0, 2, 5, 7, 8]

或者
def find_indices_with(ary, val)
  i = -1
  ary.inject([]) {|c,v| i += 1; v == val ? c << i : c }
end
又或者
find_indices_with [3,'a',3,'f','e',3,6,3,3], 3
#=> [0, 2, 5, 7, 8]


def find_indices_with(ary)
  i = -1
  ary.inject([]) {|c,v| i += 1; (yield v) ? c << i : c }
end

find_indices_with([3,'a',3,'f','e',3,6,3,3]) {|i| 3 == i}
#=> [0, 2, 5, 7, 8]

2009年2月13日 01:18
0 0

def find_indices(array, target)
  count = -1
  array.map { |i| count += 1 ; if target == i then count else nil end }.select {|i| not i.nil? }
end

a=[3,'a',3,'f','e',3,6,3,3]

puts find_indices(a, 3).inspect

結果

[0, 2, 5, 7, 8]

2009年2月12日 14:44
0 0


a=[3,'a',3,'f','e',3,6,3,3] 

a.each_with_index {|x,y|
  
   puts "#{x}下标为,#{y}"

}



输出

3下标为,0
a下标为,1
3下标为,2
f下标为,3
e下标为,4
3下标为,5
6下标为,6
3下标为,7
3下标为,8
=> [3, "a", 3, "f", "e", 3, 6, 3, 3]

2009年2月08日 01:45

相关推荐

    Ruby 语法. Ruby 是一种开源的面向对象程序设计的服务器端脚本语言

    - **标准库**:Ruby 配备了一个丰富的标准库,提供了一系列功能强大的模块和类,涵盖了网络通信、文件处理、正则表达式等多种领域。 #### 三、Ruby 语言环境与安装 - **跨平台**:Ruby 可以在多种操作系统上运行,...

    leetcode-ruby:Ruby中的LeetCode问题

    在Ruby编程语言中,LeetCode是一个非常有价值的资源,它提供了大量的编程挑战,旨在帮助开发者提升算法和数据结构技能。这个名为"leetcode-ruby"的项目是将原版的LeetCode解决方案从Python转换到Ruby的一个实践案例...

    learning-ruby.

    4. **面向对象编程**:Ruby是一种纯面向对象的语言,每个值都是一个对象,每种类型都是一个类。理解类(Class)、对象(Object)、继承(Inheritance)、模块(Module)和封装(Encapsulation)是核心内容。 5. **...

    Ruby资源ruby-v3.1.1.zip

    本资源“ruby-v3.1.1.zip”包含了Ruby的最新版本3.1.1,这是一个重要的里程碑,因为它引入了新特性、性能优化以及对旧版本的改进。 在Ruby 3.1.1中,开发者可以期待以下关键特性: 1. **块参数解构**:Ruby 3.1...

    ruby中文教程(源代码)

    Ruby是一种面向对象的、动态类型的编程语言,以其简洁、优雅的语法和强大的元编程能力而闻名。本教程针对初学者,旨在帮助你快速掌握Ruby的基础知识,并通过源代码实例加深理解。 1. **Ruby基础** - 变量:Ruby...

    Ruby语言中文教程

    7. Rails框架:Ruby最著名的应用是与Rails框架的结合,Rails是一个用于构建Web应用的全栈框架,采用MVC(模型-视图-控制器)架构模式。 在学习Ruby时,你需要了解以下几个关键概念: 1. 类(Class)与对象(Object...

    ruby入门练习题.zip

    8. **块和 Proc**:Ruby中的块是代码的另一个形式,可以用`do..end`或者花括号`{}`包裹。Proc对象可以保存一个块,可以赋值给变量,传递给方法。 9. **集合数据结构**:Ruby提供了多种内置的集合数据结构,如数组...

    Ruby学习资料chm

    4. 元编程:Ruby提供了强大的元编程能力,允许在运行时创建和修改代码,这是其灵活性的一个重要体现。 5. Blocks和Procs:Ruby中的Blocks是代码块的别名,可以用来定义匿名函数,而Procs是可存储的代码块,可以赋值...

    ruby2.1.6安装文件

    Ruby 2.1.6是该语言的一个稳定版本,发布于2014年,为用户提供了一个可靠的平台进行开发。 在Ruby 2.1.6中,有几个重要的改进和特性值得一提: 1. **改进的性能**:Ruby 2.1系列引入了一些优化,使得整体运行速度...

    ruby中文文档

    12. **Ruby on Rails**:Ruby的一个著名应用是Rails框架,它采用MVC架构模式,大大简化了Web应用的开发。 这份“ruby中文文档.chm”文件应该涵盖了上述所有内容,包括概念解释、示例代码和API参考,是学习和深入...

    前端学 Ruby:熟悉 Ruby 语法.pdf

    另外,Ruby 还提供了一个更高级的打印工具 `pp`,它可以以易于阅读的格式输出复杂的数据结构。 - **注释**:单行注释以 `#` 开头;多行注释则使用 `=begin` 和 `=end` 包围。 - **条件语句**:Ruby 的条件语句与...

    Ruby中文文档.rar

    - `define_method`和`method_missing`:前者用于在运行时定义方法,后者是当尝试调用一个不存在的方法时的回调,常用于实现自定义错误处理或动态行为。 4. **模块(Module)**: - 模块用于封装相关的方法和常量...

    Ruby中文教程。。。

    Ruby的流行很大程度上得益于Ruby on Rails框架,它是一个用于构建Web应用的全栈框架。Rails遵循MVC(模型-视图-控制器)架构模式,简化开发流程,提供诸如ActiveRecord(数据库操作)、ActionController(控制器)、...

    Ruby编程Ruby Programming

    - **抽象**:定义一个类的基本行为模式而不关注其具体实现。 ### 四、高级Ruby编程技术 #### 4.1 元编程 - **反射**:程序运行时获取类的信息和方法的能力。 - **动态创建方法**:在运行时动态地为类添加新的方法...

    Ruby语言介绍.doc

    Ruby语言教程可以涵盖从基础到高级的多个方面,以下是一个详细的Ruby语言教程概述: 一、Ruby语言概述 定义:Ruby是一种简单快捷的面向对象脚本语言,由日本人松本行弘(Yukihiro Matsumoto)在20世纪90年代开发。...

    Ruby语言中文教程.rar

    本中文教程旨在为初学者提供一个全面了解和学习Ruby的平台,包括基础语法、面向对象编程概念、控制结构、数据类型、方法、类与模块、错误与异常处理等核心内容。 1. **基础语法**:Ruby的基础语法简洁明了,易于...

    ruby语法

    10. **闭包(Lambda)与Proc**: Ruby中的闭包和Proc对象都代表了一段可调用的代码,它们可以捕获并存储其定义时的作用域。 11. **元编程**: Ruby允许在运行时修改类和对象,这是通过元编程实现的。例如,可以动态...

    ruby中文手册 chm

    RGSS是Ruby Game Scripting System的缩写,是Ruby的一个分支,主要用于游戏开发,特别是日本角色扮演游戏(RPG)的制作。RGSS教程会讲解如何使用RGSS进行游戏脚本编写,包括图形、声音、事件处理、游戏逻辑等方面的...

    ruby开发文档

    每个类都有一个父类,除了Object类,它是所有类的顶级父类。实例变量以`@`开头,类变量以`@@`开头,常量以大写字母开头。 4. **方法**:Ruby的方法定义简单,可以接受可变数量的参数,并支持默认值、剩余参数和...

    Ruby-:Ruby的基础

    5. **类与对象**:Ruby是纯面向对象的语言,每个值都是一个对象,每个类都是一个对象。类用于定义对象的属性和行为,可以通过`class`关键字创建。继承(Inheritance)是通过`操作符实现的,多态性(Polymorphism)是...

Global site tag (gtag.js) - Google Analytics