You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Ruby代码中的“Inconsistent indentation detected”错误?

解决Ruby代码缩进一致性错误(Layout/IndentationConsistency)

这个错误是Ruby代码风格检查工具(比如RuboCop)在吐槽你的代码缩进不统一,违反了社区约定的缩进规则。从报错信息看,问题出在第26行的if语句上——它的缩进和周围的顶层代码不一致。

为什么会报错?

你提交的代码里,前面的puts、变量赋值都是顶格写的,但这行if前面多了空格(从报错的26:3能看出来,if是从第3列开始的,也就是前面有2个空格),导致顶层代码的缩进混乱,风格检查工具就抛出了这个错误。

怎么修复?

只需要把if、elsif、end这些顶层的关键字都改成顶格,同时保证代码块内的语句(比如puts "Player 1 wins")用2个空格缩进(Ruby社区通用的缩进规则)。修正后的代码如下:

puts "Player 1 input move"
p1 = gets.chomp()
puts "Player 2 input move"
p2 = gets.chomp()
if p1 == "scissors" && p2 == "paper" || p1 == "paper" && p2 == "rock" || p1 == "rock" && p2 == "scissors"
  puts "Player 1 wins"
elsif p1 == "rock" && p2 == "paper" || p1 == "paper" && p2 == "scissors" || p1 == "scissors" && p2 == "rock"
  puts "Player 2 wins"
elsif p1 == "scissors" && p2 == "scissors" || p1 == "paper" && p2 == "paper" || p1 == "rock" && p2 == "rock"
  puts "It's a draw"
end

额外小建议(可选)

你的条件判断可以写得更简洁一些,比如把玩家1获胜的情况放到一个数组里,可读性会更好:

puts "Player 1 input move"
p1 = gets.chomp()
puts "Player 2 input move"
p2 = gets.chomp()

player1_wins = [["scissors", "paper"], ["paper", "rock"], ["rock", "scissors"]]
if player1_wins.include?([p1, p2])
  puts "Player 1 wins"
elsif player1_wins.include?([p2, p1])
  puts "Player 2 wins"
else
  puts "It's a draw"
end

这样既解决了缩进问题,还让代码逻辑更清晰,风格检查工具也会更满意~

内容的提问来源于stack exchange,提问作者Liam Roberts

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 15:52:27