【发布时间】:2014-08-15 14:03:25
【问题描述】:
我正在尝试检查文件以检查每一行的开头空格。我们想使用空格作为开始或制表符。如果一行以空格开头,另一行以制表符开头,我想通知用户空格不一致。还有一个例子,我想打印一行以空格开头的行和一行以制表符开头的行。我坚持获取行号部分。我尝试使用 file.gets 来获取第一个空格,但它对我不起作用(所以我没有将它包含在下面的代码中)。帮助我如何打印行号。
tabs = spaces = false
file = File.read("file_name")
file.each do |line|
line =~ /^\t/ and tabs = true
line =~ /^ / and spaces = true
if spaces and tabs
puts "The white spaces at the beginning of each line are not consistent.\n"
break
end
end
【问题讨论】:
-
+1 用于正确使用控制流操作。
-
@engineersmnky:我认为这是一个perlism。我从来没有在红宝石中看到过这个。通常是
tabs = true if line =~ /^\t/ -
Perl 是 Ruby 灵感的一部分,因此运算符的目的几乎可以肯定正是针对上述情况。我看到
and和or这些天越来越多地被Ruby 专家用于控制流,尽管我也看到它们在样式指南中被禁止或不鼓励使用。我问的问题是:“'and' 或 'or' 是否给了我任何我无法从更具可读性的 'if' 或 'unless' 中得到的东西?在我看来,后者通常更符合Ruby,更接近自然英语。(有 Ruby 等价于“Pythonic”这个词吗?) -
@AFaderDarkly: ruby-esque :)
-
@AFaderDarkly Here 是关于这个主题的精彩帖子。
标签: ruby whitespace