gpt4 book ai didi

Ruby 循环创建空行

转载 作者:数据小太阳 更新时间:2023-10-29 08:35:35 26 4
gpt4 key购买 nike

我是 Ruby 的新手(坦率地说,我只是为了好玩才开始学习它,没有任何 future 的计划),并且我注意到循环的奇怪行为。我认为我的问题是由于缺乏 Ruby 机制方面的知识。

boysNames = ["Martin", "Lucas", "John"]

#class only for one method. I know it's not absolutely correct, but huh I'm just learning Ruby
class Human
def initialize(name)
@name = name;
end
String name = ""

def getName()
puts @name;
end
end

Array boys = []




#create objects
for x in boysNames
tempBoy = Human.new(x)
boys.push(tempBoy)
end

#output for class

puts "Method 1: for in loop \n"
for x in boys
puts x.getName()
end


puts "\nMethod 2: manual array[var] \n"
boys[0].getName()
boys[1].getName()
boys[2].getName()

puts "\nMethod 3: .each do \n"
boys.each do |i|
puts i.getName()
end

#output for Array

puts "Method 1: for in loop \n"

for x in boysNames
puts x
end


puts "\nMethod 2: manual array[var] \n"
puts boysNames[0]
puts boysNames[1]
puts boysNames[2]

puts "\nMethod 3: .each do \n"
boysNames.each do |i|
puts i
end


#loop through the boys array
puts "\nboys array: \n"
for x in boys
puts x
end

所以我的问题是:为什么当我遍历数组时一切都很好,而当我遍历类时,我的结果除以换行符?有没有我找不到的“隐形”物体?如您所见,我的最后一个循环只找到了内存中不同位置的三个对象。

如果答案包含对“它是如何工作的”的解释,我会很高兴。

提前谢谢你;)

附言输出:

Method 1: for in loop 
Martin

Lucas

John


Method 2: manual array[var]
Martin
Lucas
John

Method 3: .each do
Martin

Lucas

John

Method 1: for in loop
Martin
Lucas
John

Method 2: manual array[var]
Martin
Lucas
John

Method 3: .each do
Martin
Lucas
John

boys array:
#<Human:0x007f2a586db788>
#<Human:0x007f2a586db648>
#<Human:0x007f2a586db5d0>

附言我正在使用 this作为Ruby解释器/编译器(听说Ruby也可以编译,所以...)

最佳答案

您正在调用 puts x.getName(),但是 getName() 中已经有 puts

puts 在每个参数的末尾添加一个换行符(如果还没有的话)。

print 不添加新行。

( What is the difference between print and puts? )

关于Ruby 循环创建空行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46255245/

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