java – ruby的case语句是否落空?

我正在用ruby编写一个hang子游戏,我想使用一个case语句来确定哪个身体部位对应于一些不正确的猜测.我使用我用于象棋和连接-4等其他游戏的棋盘类,因为我有一种方法来序列化棋盘类,允许我保存和加载游戏而没有任何额外的代码.对于要保存的游戏,我需要一些方法来

我正在用ruby编写一个hang子游戏,我想使用一个case语句来确定哪个身体部位对应于一些不正确的猜测.我使用我用于象棋和连接-4等其他游戏的棋盘类,因为我有一种方法来序列化棋盘类,允许我保存和加载游戏而没有任何额外的代码.对于要保存的游戏,我需要一些方法来确定hang子手的错误猜测的数量,而不需要向板类添加额外的变量.为了解决这个问题,我在一个名为history的板子类上使用了一个实例变量,它可以用来将游戏从游戏推向棋盘历史.当棋盘被序列化时,历史也被保存,游戏中可以读取历史记录,并用于确定不正确的猜测.

在蝙蝠侠游戏中,我有一个叫做阅读历史的方法(我用于所有的游戏,因为它解决了上述的序列化问题). read_history方法负责读取过去的猜测,显示它们,并确定错误猜测的数量.然后将该号码传递给一个挂起方法,该方法可确定要添加的hangman的哪些身体部位.

def hang(incorrect)
    case incorrect
    when 0 
        @hangman = ["   ","   ","   "]
        break
    when 7 
        @hangman[2][2] = '\\'
    when 6
        @hangman[2][0] = '/'
    when 5
        @hangman[2][1] = '*'
    when 4
        @hangman[1][2] = '\\'
    when 3
        @hangman[1][0] = '/'
    when 2 
        @hangman[1][1] = '|'
    when 1
        @hangman[0][1] = 'o'
    end
end

如果我在java中写这个,并且将值5传递给上面的方法,它会读取该语句,直到它打到“当5”或java术语“case 5:”时.它会注意到在语句中没有中断,并且将向下移动执行“情况4:”代码的列表,并重复直到找到中断.如果0被传递,那么它将执行代码,看到break,并且不会执行和其他语句.

我想知道Ruby是否有能力使用case语句,方式是java的方式,直到下一个语句.对于我的特殊问题,我知道我可以使用一个0.upto(不正确的)循环并以这种方式运行这些例子,但是我想知道在ruby中使用的case语句的相似点和不同之处,而不是switch-case用于java

解决方法

它不会通过.

Ruby just doesn’t have the same behavior as Java for this type of statement.

如果你想通过行为模拟堕落,你可以这样做:

def hang(incorrect)
    @hangman = ["   ","   "]
    @hangman[2][2] = '\\' if incorrect > 6
    @hangman[2][0] = '/' if incorrect > 5
    @hangman[2][1] = '*' if incorrect > 4
    @hangman[1][2] = '\\' if incorrect > 3
    @hangman[1][0] = '/' if incorrect > 2
    @hangman[1][1] = '|' if incorrect > 1
    @hangman[0][1] = 'o' if incorrect > 0

    @hangman
  end

作者: dawei

【声明】:永州站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

为您推荐

联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部