Ruby 交替使用大小写
我对Ruby非常陌生,我想知道如何自动生成一个空数组,以按字母顺序显示输入的数据,并在大写和小写之间交替显示每个条目。我在这个网站上看到过类似的帖子,描述了如何实现这一点,但似乎无法实现 下面是我的代码,这里使用的是示例: 目前,我的代码首先交替使用大写和小写,然后按字母顺序排序(创建两个列表)。我想要的只是一个按字母顺序排列的列表,并交替使用大小写。我希望这是有意义的,谢谢你的时间Ruby 交替使用大小写,ruby,Ruby,我对Ruby非常陌生,我想知道如何自动生成一个空数组,以按字母顺序显示输入的数据,并在大写和小写之间交替显示每个条目。我在这个网站上看到过类似的帖子,描述了如何实现这一点,但似乎无法实现 下面是我的代码,这里使用的是示例: 目前,我的代码首先交替使用大写和小写,然后按字母顺序排序(创建两个列表)。我想要的只是一个按字母顺序排列的列表,并交替使用大小写。我希望这是有意义的,谢谢你的时间 puts "Welcome to the word list!" words = [] 5.times do
puts "Welcome to the word list!"
words = []
5.times do
puts "Please enter a word:"
words << gets.chomp
end
words.each_with_index do |word, index|
if index.even?
puts word.upcase
else
puts word.downcase
end
end
puts "Here are your words:"
puts words.sort
显示“欢迎来到单词列表!”
单词=[]
5.5倍
放入“请输入一个单词:”
单词首先,在这两种情况下,你会得到不同的结果:
1. sort the words first and then apply your alternate upcase/downcase logic.
2. apply your alternate upcase/downcase logic first, then sort the words.
因为如果先对单词进行排序,原始输入数组中单词的索引将发生更改。因此,当您根据输入数组中单词的索引执行此操作时,它将对您的upcase/downcase逻辑产生影响
因此,您是要先对单词进行排序,还是要在最后对单词进行排序,这取决于您最初的需求
这是第一种方法:
puts "Welcome to the word list!"
words = []
results = []
5.times do
puts "Please enter a word:"
words << gets.chomp
end
words.sort.each_with_index do |word, index| # sort the input words first, then loop through
# accumulate the results in the results array
if index.even?
results << word.upcase
else
results << word.downcase
end
end
puts "Here are your resulting words: "
puts results
显示“欢迎来到单词列表!”
单词=[]
结果=[]
5.5倍
放入“请输入一个单词:”
单词我会这样做:
enum = [:upcase, :downcase].cycle
#<Enumerator: [:upcase, :downcase]:cycle>
5.times.with_object([]) do |_,words|
puts "Please enter a word:"
words << gets.chomp.send(enum.next)
end
由于您是Ruby新手,如果您理解我在第一次阅读时所做的事情,我会感到惊讶。不过,如果你把它拆了,就没那么糟糕了。如果你一直努力学习直到理解它,我保证你对语言的理解会有一个很大的飞跃
如果检查文档(返回类枚举器的实例),您将发现:
enum.next #=> :upcase
enum.next #=> :downcase
enum.next #=> :upcase
enum.next #=> :downcase
...
将方法分派给接收者是的工作。无论何时调用方法(比如说[1,2])非常感谢您的回答,这非常有效。很抱歉问另一个问题,我如何获得“结果词”要列出不带括号和引号的内容并将其放在各行中?谢谢!@garfield_digital只需做:放入结果
而不是放入结果。检查
欢迎:)您应该接受您最喜欢的答案,并找到最适合您的问题的答案。详细信息请参见本帖:非常感谢您提供的详细答案,这是我的全部想法,但非常有帮助,并且让我大开眼界。我要花时间研究这个,谢谢!
enum.next #=> :upcase
enum.next #=> :downcase
enum.next #=> :upcase
enum.next #=> :downcase
...
words = []
5.times do
puts "Please enter a word:"
words << gets.chomp.send(enum.next)
end
words