Blocks and Iterators
Ruby的代码块(block)可以被附加到方法上。可以使用代码块实现回调。实现迭代。
代码块可以包含在花括号中或者是do...end
{ puts "Hello" } # this is a block
do #
club.enroll(person) # and so is this
person.socialize #
end #
一旦创建了一个快,就可以在调用某个方法是将其附加给方法。该方法可以yield语句调用此代码快一次或多次。下面的例子展示了这种用法。首先定义一个方法调用yield两次。我们可以调用这个方法,同时在此方法(和其参数)之后放置一个代码块。
def callBlock
yield
yield
end
callBlock { puts "In the block" }
结果:
In the block
In the block
可以在调用代码块是传递参数。看下面的做法:
a = %w( ant bee cat dog elk ) # create an array
a.each { |animal| puts animal } # iterate over the contents
结果:
ant
bee
cat
dog
elk
看看如何在Aarry类的内部实现each迭代器。在数组内遍历每个元素,然后对每个元素调用yield。伪代码如下:
# within class Array...
def each
for each element
yield(element)
end
end
现在可以使用each方法来遍历数组中的每个元素,并提供一个代码块。此代码块会被每个元素依次调用。
[ 'cat', 'dog', 'horse' ].each do |animal|
print animal, " -- "
end
结果:
cat -- dog -- horse --
代码块在循环中的用法。
5.times { print "*" }
3.upto(6) {|i| print i }
('a'..'e').each {|char| print char }
结果:
*****3456abcde
分享到:
相关推荐
赠送jar包:deeplearning4j-datavec-iterators-1.0.0-M1.1.jar; 赠送原API文档:deeplearning4j-datavec-iterators-1.0.0-M1.1-javadoc.jar; 赠送源代码:deeplearning4j-datavec-iterators-1.0.0-M1.1-sources....
赠送jar包:deeplearning4j-utility-iterators-1.0.0-M1.1.jar; 赠送原API文档:deeplearning4j-utility-iterators-1.0.0-M1.1-javadoc.jar; 赠送源代码:deeplearning4j-utility-iterators-1.0.0-M1.1-sources....
赠送jar包:deeplearning4j-datavec-iterators-1.0.0-M1.1.jar; 赠送原API文档:deeplearning4j-datavec-iterators-1.0.0-M1.1-javadoc.jar; 赠送源代码:deeplearning4j-datavec-iterators-1.0.0-M1.1-sources....
赠送jar包:deeplearning4j-utility-iterators-1.0.0-M1.1.jar; 赠送原API文档:deeplearning4j-utility-iterators-1.0.0-M1.1-javadoc.jar; 赠送源代码:deeplearning4j-utility-iterators-1.0.0-M1.1-sources....
注:下文中的 *** 代表文件名中的组件名称。 # 包含: 中文-英文对照文档:【***-javadoc-API文档-中文(简体)-英语-对照版.zip】 jar包下载地址:【***.jar下载地址(官方地址+国内镜像地址).txt】 ...
Java Methods-Lists and Iterators 在 Java 语言中,列表(Lists)和迭代器(Iterators)是两个非常重要的概念。列表是一种数据结构,它可以存储多个元素,而迭代器则是用来遍历列表元素的对象。在本文中,我们将...
Logical Operations on Bits 1.6 - Logical Operations on Binary Numbers and Bit Strings 1.7 - Signed and Unsigned Numbers 1.8 - Sign and Zero Extension 1.9 - Shifts and Rotates 1.10 - ...
- **迭代器与生成器(Iterators and Generators)**:迭代器用于遍历集合中的元素,而生成器提供了一种延迟计算机制。 - **异常处理(Exception Handling)**:Python使用try-except语句处理运行时错误。 - **元编程...
注:下文中的 *** 代表文件名中的组件名称。 # 包含: 中文-英文对照文档:【***-javadoc-API文档-中文(简体)-英语-对照版.zip】 jar包下载地址:【***.jar下载地址(官方地址+国内镜像地址).txt】 ...
faster, and compatible with other programs and libraries Get familiar with Iterators and Generators, the new features added in ES6 Find out about ECMAScript 6’s Arrow functions, and make them your ...
- **Iterators:** Describes iterators and their use in iterating through containers. - **Algorithms:** Discusses STL algorithms like sorting, searching, and modifying sequences. - **Function Objects:**...
js-iterators(零依赖) JS中的Ruby样式迭代器。 JS中的Ruby样式范围[ ... 1. . _10 ] ; // [1, 2, 3, 4, 5, 6, 7, 8, 9][ ... 1. . _ - 10 ] ; // [1, 0, -1, -2, ..., -9][ ... Math . PI . _9 ] ; // [3....
npm install underscore-arity-iterators 或者,下载单个underscore.arity-iterators.js文件。 该文件,当包含在页面上或 Node require d 时,会将自身混合到 Underscore 中,它希望以require('underscore')或全局...
- **Iterators and Enumerations**: Traversing collections. - **Sorting and Searching**: Algorithms and methods for sorting and searching collections. #### 8. Inner Classes Inner classes can access ...
let pets = new Set(["Cat", "Dog", "Hamster"]); pets["species"] = "mammals"; for (let pet in pets) { console.log(pet); // 输出:"species" } for (let pet of pets) { console.log(pet); // 输出:"Cat", ...
- **Iterators, Generator Expressions, and Generators:** Efficiently iterating over large datasets and generating values on-the-fly. - **Decorators:** Modifying the behavior of functions or classes ...
Views And Iterators Instead Of Lists Ordering Comparisons Integers Text Vs. Data Instead Of Unicode Vs. 8-bit Overview Of Syntax Changes New Syntax Changed Syntax Removed Syntax Changes Already...
此外,书中还涵盖了C++中的命名空间(Namespaces)、运算符重载(Operator Overloading)、构造函数与析构函数(Constructors and Destructors)等关键概念,这些都是C++程序员必须精通的领域。通过这些章节,读者...