class RuboCop::Cop::Style::For
variables is different between ‘each` and `for`.
This cop’s autocorrection is unsafe because the scope of
@safety
end
end
puts n
for n in [1, 2, 3] do
def foo
# good
end
end
puts n
[1, 2, 3].each do |n|
def foo
# bad
@example EnforcedStyle: for
end
end
puts n
[1, 2, 3].each do |n|
def foo
# good
end
end
puts n
for n in [1, 2, 3] do
def foo
# bad
@example EnforcedStyle: each (default)
allowed.
parameter. An ‘each` call with a block on a single line is always
preferred alternative is set in the EnforcedStyle configuration
Looks for uses of the `for` keyword or `each` method. The
def on_block(node)
def on_block(node) return unless suspect_enumerable?(node) if style == :for return unless node.receiver add_offense(node, message: PREFER_FOR) do |corrector| EachToForCorrector.new(node).call(corrector) opposite_style_detected end else correct_style_detected end end
def on_for(node)
def on_for(node) if style == :each add_offense(node, message: PREFER_EACH) do |corrector| ForToEachCorrector.new(node).call(corrector) opposite_style_detected end else correct_style_detected end end
def suspect_enumerable?(node)
def suspect_enumerable?(node) node.multiline? && node.method?(:each) && !node.send_node.arguments? end