6个答案 按时间排序 按投票排序
-
一行代码
[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
-
一行代码
[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
-
办法好多……例如说上面两位的办法的变体可以是
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
-
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
-
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编程语言中,LeetCode是一个非常有价值的资源,它提供了大量的编程挑战,旨在帮助开发者提升算法和数据结构技能。这个名为"leetcode-ruby"的项目是将原版的LeetCode解决方案从Python转换到Ruby的一个实践案例...
4. **面向对象编程**:Ruby是一种纯面向对象的语言,每个值都是一个对象,每种类型都是一个类。理解类(Class)、对象(Object)、继承(Inheritance)、模块(Module)和封装(Encapsulation)是核心内容。 5. **...
本资源“ruby-v3.1.1.zip”包含了Ruby的最新版本3.1.1,这是一个重要的里程碑,因为它引入了新特性、性能优化以及对旧版本的改进。 在Ruby 3.1.1中,开发者可以期待以下关键特性: 1. **块参数解构**:Ruby 3.1...
Ruby是一种面向对象的、动态类型的编程语言,以其简洁、优雅的语法和强大的元编程能力而闻名。本教程针对初学者,旨在帮助你快速掌握Ruby的基础知识,并通过源代码实例加深理解。 1. **Ruby基础** - 变量:Ruby...
7. Rails框架:Ruby最著名的应用是与Rails框架的结合,Rails是一个用于构建Web应用的全栈框架,采用MVC(模型-视图-控制器)架构模式。 在学习Ruby时,你需要了解以下几个关键概念: 1. 类(Class)与对象(Object...
8. **块和 Proc**:Ruby中的块是代码的另一个形式,可以用`do..end`或者花括号`{}`包裹。Proc对象可以保存一个块,可以赋值给变量,传递给方法。 9. **集合数据结构**:Ruby提供了多种内置的集合数据结构,如数组...
4. 元编程:Ruby提供了强大的元编程能力,允许在运行时创建和修改代码,这是其灵活性的一个重要体现。 5. Blocks和Procs:Ruby中的Blocks是代码块的别名,可以用来定义匿名函数,而Procs是可存储的代码块,可以赋值...
Ruby 2.1.6是该语言的一个稳定版本,发布于2014年,为用户提供了一个可靠的平台进行开发。 在Ruby 2.1.6中,有几个重要的改进和特性值得一提: 1. **改进的性能**:Ruby 2.1系列引入了一些优化,使得整体运行速度...
12. **Ruby on Rails**:Ruby的一个著名应用是Rails框架,它采用MVC架构模式,大大简化了Web应用的开发。 这份“ruby中文文档.chm”文件应该涵盖了上述所有内容,包括概念解释、示例代码和API参考,是学习和深入...
另外,Ruby 还提供了一个更高级的打印工具 `pp`,它可以以易于阅读的格式输出复杂的数据结构。 - **注释**:单行注释以 `#` 开头;多行注释则使用 `=begin` 和 `=end` 包围。 - **条件语句**:Ruby 的条件语句与...
- `define_method`和`method_missing`:前者用于在运行时定义方法,后者是当尝试调用一个不存在的方法时的回调,常用于实现自定义错误处理或动态行为。 4. **模块(Module)**: - 模块用于封装相关的方法和常量...
Ruby的流行很大程度上得益于Ruby on Rails框架,它是一个用于构建Web应用的全栈框架。Rails遵循MVC(模型-视图-控制器)架构模式,简化开发流程,提供诸如ActiveRecord(数据库操作)、ActionController(控制器)、...
- **抽象**:定义一个类的基本行为模式而不关注其具体实现。 ### 四、高级Ruby编程技术 #### 4.1 元编程 - **反射**:程序运行时获取类的信息和方法的能力。 - **动态创建方法**:在运行时动态地为类添加新的方法...
Ruby语言教程可以涵盖从基础到高级的多个方面,以下是一个详细的Ruby语言教程概述: 一、Ruby语言概述 定义:Ruby是一种简单快捷的面向对象脚本语言,由日本人松本行弘(Yukihiro Matsumoto)在20世纪90年代开发。...
本中文教程旨在为初学者提供一个全面了解和学习Ruby的平台,包括基础语法、面向对象编程概念、控制结构、数据类型、方法、类与模块、错误与异常处理等核心内容。 1. **基础语法**:Ruby的基础语法简洁明了,易于...
10. **闭包(Lambda)与Proc**: Ruby中的闭包和Proc对象都代表了一段可调用的代码,它们可以捕获并存储其定义时的作用域。 11. **元编程**: Ruby允许在运行时修改类和对象,这是通过元编程实现的。例如,可以动态...
RGSS是Ruby Game Scripting System的缩写,是Ruby的一个分支,主要用于游戏开发,特别是日本角色扮演游戏(RPG)的制作。RGSS教程会讲解如何使用RGSS进行游戏脚本编写,包括图形、声音、事件处理、游戏逻辑等方面的...
每个类都有一个父类,除了Object类,它是所有类的顶级父类。实例变量以`@`开头,类变量以`@@`开头,常量以大写字母开头。 4. **方法**:Ruby的方法定义简单,可以接受可变数量的参数,并支持默认值、剩余参数和...
5. **类与对象**:Ruby是纯面向对象的语言,每个值都是一个对象,每个类都是一个对象。类用于定义对象的属性和行为,可以通过`class`关键字创建。继承(Inheritance)是通过`操作符实现的,多态性(Polymorphism)是...