【发布时间】:2016-09-24 20:28:41
【问题描述】:
我正在通过一些在线练习问题来学习 Ruby,虽然我能够解决这个问题,但我很难理解关于变量声明的位置的一些事情。
为什么当我在 idx2 while 循环内声明/定义“对”(数组索引的总和)时,以下代码有效,但在声明索引本身后直接这样做时无效?
def two_sum(nums)
idx=0
idx2=0
while idx<nums.length-1
idx2=idx+1
while idx2<nums.length
pair=nums[idx]+nums[idx2]
if pair==0
return [idx, idx2]
else
idx2+=1
end
end
idx+=1
end
end
上面的版本可以,但是下面的结构不行。
def two_sum(nums)
idx=0
idx2=0
pair=nums[idx]+nums[idx2]
while idx<nums.length-1
idx2=idx+1
while idx2<nums.length
if pair==0
return [idx, idx2]
else
idx2+=1
end
end
idx+=1
end
end
如果有人可以对此提供解释或一些入门级资源,我将不胜感激。谢谢。
编辑:
对于所需输出的缩进和特异性问题,我们深表歉意。我对此完全陌生,有时细节会溜走,我感谢您的反馈。感谢您一步一步的逻辑运行,这正是我想要的。
【问题讨论】:
-
work是什么意思?您预期的输入/输出值是多少? -
编辑了您的代码以修复缩进。在第二个示例中,
pair变量在while的每次迭代中都将具有相同的值。首先它可以改变,因为idx2可以增加。不错的用户名顺便说一句:)
标签: ruby variables syntax declaration