这是一个来自应用程序学院准备问题的问题 - 有人可以解释答案。我不明白操作的顺序在这个while循环是如何工作的:Ruby中的操作顺序是什么?
def dasherize_number(num)
i = 0
dashed = ""
num_s = num.to_s
while i < num_s.length
digit = num_s[i].to_i
if i > 0
prev_digit = num_s[i-1].to_i
if prev_digit%2 == 1 || digit%2 == 1
dashed += "-" ## THIS LINE COMES FIRST
end
end
dashed += num_s[i] ## WHY IS THIS ADDED TO "DASHED" FIRST?
i += 1
end
return dashed
end
puts(dasherize_number(32467743))
结果是3-245-7-7-4-3使所有的奇数有除了两边破折号最终案例。
对于我来说,插入短划线的命令在原始字母后添加到新字符串中并没有任何意义,即使它在代码中位于第一位。
谢谢!
你的意思[运算符优先级(https://开头ruby- doc.org/core-2.2.0/doc/syntax/precedence_rdoc.html)?您应该逐步完成此代码并更好地进行调试,并输出每次迭代的结果。 – tadman
提示:'digit.odd?'可能比模数技巧更易于理解。 – tadman