初学者 Ruby 散列语法错误
Beginner Ruby Syntax Error with hash
我的代码似乎无法正常工作,因为我对哈希的处理不当...
我的代码中有两个部分引用了哈希,还有两个我尚未通过谷歌搜索解决的明显语法错误。
第一部分语法错误和代码:
"syntax error, unexpected tSTRING_BEG, expecting keyword_do or '{' or '('"
def showBoard
puts " 1 2 3"
puts " A #{@spaces["A1"]} | #{@spaces["A2"]} | #{@spaces["A3"]}"
puts ---------------------------
puts " B #{@spaces["B1"]} | #{@spaces["B2"]} | #{@spaces["B3"]}"
puts ---------------------------
puts " C #{@spaces["C1"]} | #{@spaces["C2"]} | #{@spaces["C3"]}"
puts ---------------------------
end
第二部分语法错误和代码:
"syntax error, unexpected =>, expecting keyword_end"
def checkGame?
if
"A1"=>"X" && "A2"=>"X" && "A3"=>"X" ||
"B1"=>"X" && "B2"=>"X" && "B3"=>"X" ||
"C1"=>"X" && "C2"=>"X" && "C3"=>"X" ||
"A1"=>"X" && "B1"=>"X" && "C1"=>"X" ||
"A2"=>"X" && "B2"=>"X" && "C2"=>"X" ||
"A3"=>"X" && "B3"=>"X" && "C3"=>"X" ||
"A1"=>"X" && "B2"=>"X" && "C3"=>"X" ||
"A3"=>"X" && "B2"=>"X" && "C1"=>"X"
puts player1 + " wins!"
checkGame == true
elsif
"A1"=>"O" && "A2"=>"O" && "A3"=>"O" ||
"B1"=>"O" && "B2"=>"O" && "B3"=>"O" ||
"C1"=>"O" && "C2"=>"O" && "C3"=>"O" ||
"A1"=>"O" && "B1"=>"O" && "C1"=>"O" ||
"A2"=>"O" && "B2"=>"O" && "C2"=>"O" ||
"A3"=>"O" && "B3"=>"O" && "C3"=>"O" ||
"A1"=>"O" && "B2"=>"O" && "C3"=>"O" ||
"A3"=>"O" && "B2"=>"O" && "C1"=>"O"
puts player2 + " wins!"
return true
checkGame == true
elsif
"A1"!=" " && "A2"!=" " && "A3"!= " " &&
"B1"!=" " && "B2"!=" " && "B3"!= " " &&
"C1"!=" " && "C2"!=" " && "C3"!= " "
puts "It's a draw. :/ "
checkGame == true
end
return false
end
怎么了?
第一部分的问题是
puts -------
您可能打算用引号将破折号括起来,使其成为一个字符串。
=>
(hashrocket) 运算符仅在声明新哈希时使用(例如 {"a" => 1}
),但您的第二位代码在该上下文之外使用它(我不是确保您尝试这样做并不能真正提出任何建议)。还有一些其他事情也没有意义 - 你在底部比较字符串文字,我怀疑 || 的先例而且 && 不会做你想做的事,不管那是什么
我的代码似乎无法正常工作,因为我对哈希的处理不当...
我的代码中有两个部分引用了哈希,还有两个我尚未通过谷歌搜索解决的明显语法错误。
第一部分语法错误和代码:
"syntax error, unexpected tSTRING_BEG, expecting keyword_do or '{' or '('"
def showBoard
puts " 1 2 3"
puts " A #{@spaces["A1"]} | #{@spaces["A2"]} | #{@spaces["A3"]}"
puts ---------------------------
puts " B #{@spaces["B1"]} | #{@spaces["B2"]} | #{@spaces["B3"]}"
puts ---------------------------
puts " C #{@spaces["C1"]} | #{@spaces["C2"]} | #{@spaces["C3"]}"
puts ---------------------------
end
第二部分语法错误和代码:
"syntax error, unexpected =>, expecting keyword_end"
def checkGame?
if
"A1"=>"X" && "A2"=>"X" && "A3"=>"X" ||
"B1"=>"X" && "B2"=>"X" && "B3"=>"X" ||
"C1"=>"X" && "C2"=>"X" && "C3"=>"X" ||
"A1"=>"X" && "B1"=>"X" && "C1"=>"X" ||
"A2"=>"X" && "B2"=>"X" && "C2"=>"X" ||
"A3"=>"X" && "B3"=>"X" && "C3"=>"X" ||
"A1"=>"X" && "B2"=>"X" && "C3"=>"X" ||
"A3"=>"X" && "B2"=>"X" && "C1"=>"X"
puts player1 + " wins!"
checkGame == true
elsif
"A1"=>"O" && "A2"=>"O" && "A3"=>"O" ||
"B1"=>"O" && "B2"=>"O" && "B3"=>"O" ||
"C1"=>"O" && "C2"=>"O" && "C3"=>"O" ||
"A1"=>"O" && "B1"=>"O" && "C1"=>"O" ||
"A2"=>"O" && "B2"=>"O" && "C2"=>"O" ||
"A3"=>"O" && "B3"=>"O" && "C3"=>"O" ||
"A1"=>"O" && "B2"=>"O" && "C3"=>"O" ||
"A3"=>"O" && "B2"=>"O" && "C1"=>"O"
puts player2 + " wins!"
return true
checkGame == true
elsif
"A1"!=" " && "A2"!=" " && "A3"!= " " &&
"B1"!=" " && "B2"!=" " && "B3"!= " " &&
"C1"!=" " && "C2"!=" " && "C3"!= " "
puts "It's a draw. :/ "
checkGame == true
end
return false
end
怎么了?
第一部分的问题是
puts -------
您可能打算用引号将破折号括起来,使其成为一个字符串。
=>
(hashrocket) 运算符仅在声明新哈希时使用(例如 {"a" => 1}
),但您的第二位代码在该上下文之外使用它(我不是确保您尝试这样做并不能真正提出任何建议)。还有一些其他事情也没有意义 - 你在底部比较字符串文字,我怀疑 || 的先例而且 && 不会做你想做的事,不管那是什么