gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 16:58:51 25 4
gpt4 key购买 nike

在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com