我今天制作了一个非常小的 ruby 脚本,它使用正则表达式来跟踪具有特定名称的文件中的某些内容,并在添加替换之前删除该内容。(否则在迭代过程中会出错)。
我不太习惯 ruby(自从我的假期工作开始,即 1-2 周前才开始使用它),但我的一个习惯是在迭代列表时避免接触列表(或大多数其他 ADT 使用索引)(删除某些内容),无论我使用哪种语言。
经过一番搜索,我发现了一些Array
可以提供帮助的功能。现在,我正在使用Array.reject!
并且脚本的工作方式就像我希望它工作一样,但老实说,我无法弄清楚为什么Array.reject! {|line| line =~ regex }
跳过数组中的对象没有问题。这些来源,ruby-docs和一些随机网站,确认更改在迭代时立即应用,这让我想知道它是如何不搞砸的......被删除的行之间没有空格/单词,只会\n
带来下一个当然是它自己的行(但这只是字符串结尾的一部分)。
有人对此有很好的解释吗?