Ruby 1.9 中的大小写表达式不同? [英] Case expression different in Ruby 1.9?

查看:37
本文介绍了Ruby 1.9 中的大小写表达式不同?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是一本书中的示例代码.我假设它适用于 Ruby 1.8.

This is an example code from a book. I assume it's for Ruby 1.8.

    birthyear = 1986
    generation = case birthyear
        when 1946...1963: "Baby boomer"
        when 1964...1976: "Generation X"
        when 1977...2012: "new generation"
        else nil
    end

    puts generation

我在 Ruby 1.9 上运行它,并收到此错误消息:

I ran it on Ruby 1.9, and got this error message:

    Untitled 2.rb:12: syntax error, unexpected ':', expecting keyword_then or ',' or ';' or '\n'
    when 1946...1963: "Baby boomer"
                     ^
Untitled 2.rb:13: syntax error, unexpected keyword_when, expecting $end
    when 1964...1976: "Generation X"

我该如何更改?

推荐答案

1.8.x 和 1.9.x 之间的语法发生了变化,现在不再允许使用 ::>

There was a change in the syntax between 1.8.x and 1.9.x where the : is now no longer allowed:

 birthyear = 1986
 generation = case birthyear
   when 1946...1963
     "Baby boomer"
   when 1964...1976
     "Generation X"
   when 1977...2012
     "new generation"
   else
     nil
   end

 puts generation

技术上 : 已被 then 取代,但如果您使用换行符,则这是一个可选关键字.跟踪使用旧语法的情况有点麻烦,因此希望搜索 case 足够接近.

Technically : has been replaced by then but that's an optional keyword if you use a newline. It's a bit of a hassle to go and track down cases where you've used the old syntax, so hopefully searching for case is close enough.

这篇关于Ruby 1.9 中的大小写表达式不同?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆