java中printf輸出格式 perl中foreach為什么輸出不了第一行?
perl中foreach為什么輸出不了第一行?這是因?yàn)閒oreach嘗試枚舉@line,pop在枚舉過(guò)程中修改@line,所以foreach本身會(huì)有問(wèn)題。從可能的原因分析,foreach嘗試從行的開(kāi)始
perl中foreach為什么輸出不了第一行?
這是因?yàn)閒oreach嘗試枚舉@line,pop在枚舉過(guò)程中修改@line,所以foreach本身會(huì)有問(wèn)題。從可能的原因分析,foreach嘗試從行的開(kāi)始遍歷到行的結(jié)束,遍歷過(guò)程結(jié)束時(shí)的元素將由您從列表中刪除。在其他編程語(yǔ)言中,迭代器提前結(jié)束。Shift沒(méi)有問(wèn)題,因?yàn)楸闅v的方向與Shift刪除元素的方向完全相同。被移除的元素被遍歷。應(yīng)該避免foreach和任何修改列表的函數(shù)的組合,否則會(huì)出錯(cuò)。正確的方法是使用while(@line)而不是foreach(@line)。如果使用foreach,則應(yīng)該使用foreach$line(reverse@lines){printf%sn“,$line}