【问题标题】:Beginner Ruby Syntax Error with hash带有哈希的初学者 Ruby 语法错误
【发布时间】:2015-06-09 16:45:33
【问题描述】:

我的代码似乎无法正常工作,因为我对哈希处理不当...

我的代码中有两个部分引用了哈希,还有两个不同的语法错误我没有通过谷歌搜索解决。

第一节语法错误和代码:

"语法错误,意外的 tSTRING_BEG,需要关键字_do 或 '{' 或 '('"

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

第二部分语法错误和代码:

“语法错误,意外 =>,期望关键字_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

怎么了?

【问题讨论】:

    标签: ruby hash hashtable


    【解决方案1】:

    第一节的问题是

    puts -------
    

    您可能打算将破折号括在引号中,以使其成为字符串。

    => (hashrocket) 运算符仅在声明新哈希(例如 {"a" => 1})时使用,但您的第二段代码在该上下文之外使用它(我不确定您要尝试什么这样做并不能真正提出任何建议)。还有一些其他的东西也没有意义——你在底部比较字符串文字,我怀疑 || 的先例&& 不会做你想做的事,不管是什么

    【讨论】:

    • 啊,呃!给第一个...感谢您的回复。这是一个井字游戏。对于第二段代码,它应该在第一个 if 和 elsif 中检查 win,并在最后一个 elsif 中检查 draw ......我将 => 替换为 ==
    猜你喜欢
    • 1970-01-01
    • 2011-02-24
    • 2015-02-05
    • 1970-01-01
    • 1970-01-01
    • 2015-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多