`
clark1231
  • 浏览: 249484 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

ruby case表达式

    博客分类:
  • ruby
阅读更多

 

Ruby 中的 case 语句非常强大,首先我们来看一个基本用法:

grade = case
             when point >= 85: 'A'
             when point >= 70 && point < 80: 'B'
             when point >= 60 && point < 70: 'C'
             when point < 60: 'D'
             else 'E'
             end

 这里 case 语句的作用和 if 表达式类似, case 语句的返回值就是最后一个执行的表达式的值。和 if 语句类似,如果写在同一行的话需要加 then 或冒号。

另一种也是最常用的形式是在 case 后列出目标,然后每个语句依次和目标比较:

case input_line
when "debug"
    print "We are in debug mode."
when /p\s+(\w+)/
    dump_variable($1)
when "quit", "exit"
    exit
else
    print "Illegal command: #{input_line}"
end
 另一个例子:
Season = case month
                when 3..5 :   "Spring"
                when 6..8 :   "Summer"
                when 9..11:   "Autumn"
                when 12..2:   "Winter"
                else          "Error"
                end

 

Ruby 提供了一个运算符 === ,只要一个类提供了 === 方法,那这个类的对象就可以出现在 case 语句中。例如对于正则表达式定义了 === 为模式匹配。

Ruby 中,所有类的基类是 Class 类,所有类实例都是 Class 类的实例( to-do )。它定义 === 的含义为为参数所提供是否为实例的类或父类。

case shape
when Square, Rectangle
# ...
when Circle
# ...
when Triangle
# ...
else
# ...
end
 

 

分享到:
评论

相关推荐

    ruby正则表达式规则

    ruby正则表达式规则 ruby中经常用到的正则表达式使用方法

    ruby正则表达式

    比较齐全的正则表达式,完全可以满足你平时的各种需要

    Ruby中case表达式详解

    Ruby的case表达式有两种形式: 第一种形式接近于一组连续的if语句:它让你列出一组条件,并执行第一个为真的条件表达式所对应的语句。 第二种形式,在case语句的顶部指定一个目标,而每个when从句列出一个或者多个...

    ruby 正则表达式详解及示例代码

    在编写puppet的pp文件中,会用到很多ruby的正则表达式,常用的正则如下: 正则表达式: [codesyntax lang=”ruby”] {}: 重复次数(如 {4}表示前面的会重复出现恰好4次) {m,n}: 前面元素最少出现m次,最多出现n次 []...

    ruby 正则表达式 教程

    我们再看一个更有趣的程序.这次我们来测试一个字符串是否和一个由简明模式(concise pattern)编码产生的描述相匹配. 在这些模式(pattern)里,一些字符或字符组合都有独特的意义,包括: 代码如下:[] 范围描述符 ...

    list_matcher:Ruby正则表达式生成器

    用于从字符串列表创建紧凑的,非回溯的正则表达式。 安装 将此行添加到您的应用程序的Gemfile中: gem 'list_matcher' 然后执行: $ bundle 或将其自己安装为: $ gem install list_matcher 概要 require '...

    ruby-emoji-regex::gem_stone:一组用于匹配Unicode Emoji符号的Ruby正则表达式

    Ruby表情符号正则表达式 :gem_stone: 一组Ruby正则表达式,用于匹配Unicode Emoji符号。背景这是基于 Javascript软件包的出色工作。 emoji-regex是根据Unicode联盟的数据巧妙地组合而成的。 本文提供的正则表达式...

    js_regex:将Ruby正则表达式转换为JavaScript正则表达式

    这是将Ruby的正则表达式转换为JavaScript风格的Ruby宝石。 与,它可以处理Ruby的正则表达式功能,并且如果仍然存在任何不兼容之处,它会返回以表明它们。 这意味着您将有更好的机会来翻译正则表达式,并且如果...

    Ruby程序中正则表达式的基本使用教程|angluo-re-150672.pdf

    和Python与Perl一样,Ruby对正则表达式的支持也是相当好的,这里送出整理的Ruby程序中正则表达式的基本使用教程,需要的朋友可以参考下

    ruby_regex:Ruby正则表达式库

    RubyRegex是Ruby中很好的正则表达式集合 常用表达 RubyRegex::Url RubyRegex::Domain RubyRegex::Email RubyRegex::Username RubyRegex::USSocialSecurity RubyRegex::GeneralPostalCode RubyRegex::ZIPCode ...

    详解Ruby中正则表达式对字符串的匹配和替换操作

    说起Ruby当然要提起它的正则表达式机制,正则表达式作为一个强大的匹配语言已经越来越多的使用到不同的领域当中,从字符串验证,匹配,到网页抽取等。虽然有些人诟病与正则表达式的匹配效率,但是考虑到正则的强大...

    Ruby中使用正则表达式的基础指引

    正则表达式的内建支持通常只限于脚本语言如Ruby,Perl和awk等,这是一个耻辱:尽管正则表达式很神秘,但它是一个强大的文本处理工具。通过内建而不是通过程序库接口来支持它,有很大的不同。 正则表达式只是一种指定...

    citrus:Ruby 的解析表达式

    Citrus :: 解析 Ruby 的表达式 Citrus 是一个紧凑而强大的解析库,它结合了该语言的优雅和表现力以及的简单性和强大功能。 安装 通过 : $ gem install citrus 从本地副本: $ git clone git://github....

    ruby_parser:ruby_parser是用纯Ruby编写的Ruby解析器。 它输出可以通过ruby2ruby gem进行操纵并转换回ruby的s表达式

    它输出可以通过ruby2ruby gem进行操纵并转换回ruby的s表达式。 举个例子: def conditional1 arg1 return 1 if arg1 == 0 return 0 end 变成: s ( :defn , :conditional1 , s ( :args , :arg1 ), s ( :if , ...

    正则表达式经典实例

    对于如何使用正则表达式来解决性能不佳、误报、漏报等常见的错误以及完成一些常见的任务,《正则表达式经典实例》给出了涉及基于C#、Java、JavaScript、Perl、PHP、Python、Ruby和VB.NET等编程语言的解决方案。...

    Ruby-TreetopPEG解析表达式语法解析器

    Treetop - PEG (解析表达式语法) 解析器

Global site tag (gtag.js) - Google Analytics