這是一個來自應用程序學院準備問題的問題 - 有人可以解釋答案。我不明白操作的順序在這個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