java - 解释 Ruby 循环与 Java 的比较

标签 java ruby arrays loops iteration

在 Java 中,您必须指定要增加什么值以及增加多少。在 Ruby 中,您似乎可以将数组的每个值设置为某个随机变量,并且它会自动递增。这让我很烦恼,因为即使我了解正在发生的事情,我也无法理解如何获得更好的控制。如果我想加 2 或减量怎么办?这是来自 Codecademy 的示例。

odds = [1,3,5,7,9]

# Add your code below!
odds.each do |item|
    item *= 2
    print item
end

我知道它正在迭代数组中的每个元素,但是 item 来自哪里?您是否只是将其从空中拉出来,然后 ruby​​ 将其初始化为您正在迭代的特定元素?另外,您如何指定要如何增加?如果我只想要数组中的所有其他元素怎么办?

最佳答案

each 是一个迭代器方法,它与代码 block 一起使用:它迭代数组(或字典)中的项目,数组中给定的顺序,并一次传递一个迭代值。

item 设置为调用 each 方法的对象中的每个值。

一般语法是:

ARRAY.each do |var| CODE-USING-var end

ARRAY.each {|var| CODE-USING-var }

两种语法具有相同的含义。有一个惯例是在较大的代码块上使用 do - end 对,但这只是一个惯例。

有一个名为 each_with_index 的相关方法,它在每次迭代时生成两个值:项目值和该项目在对象内的索引(从 0 开始)。

示例:

#!/usr/bin/env ruby
#
words = %w( now is the time for all good men )
def show_words list
  puts "---"
  list.each_with_index do
    |word,x|
    puts "word #{x} = #{word}"
  end
end
show_words words
show_words words.reverse
show_words words.sort

这是调用:

./t2.rb
---
word 0 = now
word 1 = is
word 2 = the
word 3 = time
word 4 = for
word 5 = all
word 6 = good
word 7 = men
---
word 0 = men
word 1 = good
word 2 = all
word 3 = for
word 4 = time
word 5 = the
word 6 = is
word 7 = now
---
word 0 = all
word 1 = for
word 2 = good
word 3 = is
word 4 = men
word 5 = now
word 6 = the
word 7 = time

关于java - 解释 Ruby 循环与 Java 的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29402220/

相关文章:

java - 将数据文件输入字符串数组

python - 删除两个等长数组中nan AND对应的元素

java - 在 Android 上从蓝牙数据传输读取数据

java - 如何使用 XML Java DOM 重新排序节点

ruby-on-rails - 我如何对为什么 Ruby 在我的机器上突然变慢进行基准测试?

Ruby 数组数组和 map 方法

java - LinkedHashMap 的 keySet() 和 values() 方法的行为

Java元编程

ruby - 如何调用 rake 目标两次

java - 我怎样才能给 JRuby 打补丁来给它一个伪文件系统?