`
Hooopo
  • 浏览: 335432 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Pattern Match In Ruby

阅读更多
最近看了一些Erlang,模式匹配是个好东西,简单的sum函数:

sum([]) -> 0;
sum([First|Rest]) -> First + sum(Rest).


突然想起来,其实Ruby里面也可以用模式匹配:

def sum(list)
  return 0 if list.empty?
  first, *rest = *list
  return first + sum(rest)
end


尾递归版本:

def sum(list)
  sum_acc(list, 0)
end

def sum_acc(list, s)
  return s if list.empty?
  first, *rest = *list
  return sum_acc(rest, first + s)
end


Pattern Match In Ruby
1
1
分享到:
评论

相关推荐

    pattern-match:Ruby 的模式匹配库

    $ gem install pattern-match 或者 $ git clone git://github.com/k-tsj/pattern-match.git $ cd pattern-match $ gem build pattern-match.gemspec $ gem install pattern-match-*.gem 或者 $ gem install ...

    Ruby on Rail 基础知识 一张纸

    (pattern)`: 匹配不包含pattern的情况。 #### 五、总结 通过本文的学习,我们可以了解到Ruby on Rails的一些基础知识点,包括各种字符串处理方法、正则表达式方法、时间处理方法、数组处理方法、验证方法以及枚举...

    强制执行密码强度要求,例如长度和随机性_Ruby_.zip

    PASSWORD_PATTERN = /\A[a-zA-Z0-9@#$%^&+=]{8,}\z/ ``` 这个正则表达式要求密码至少8个字符,且包含字母、数字及特殊字符。 3. **自定义验证方法** 在Ruby中,可以创建一个自定义验证方法来检查密码强度。例如...

    ruby_1_9_3_stdlib

    `match`, `=~` 和 `/pattern/` 是常用的正则表达式操作。 5. **Array** 和 **Hash**:数组是有序元素集合,可以使用索引访问;哈希则是一种键值对的数据结构,通过键来访问值。它们都提供了丰富的操作方法,如 `...

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

    Ruby正则表达式的强大之处还在于它提供了丰富的内置方法来处理字符串,如match、scan、sub、gsub等。这些方法允许程序员以非常灵活和强大的方式对字符串进行搜索和修改。 在编写正则表达式时,需要特别注意特殊字符...

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

    在Ruby中,正则表达式通过斜杠分隔的模式定义,例如`/pattern/`,其中的模式即为正则表达式的规则。 创建正则表达式的一个典型方式是在两个斜线之间编写模式。例如,匹配包含Perl或Python的字符串可以使用`/Perl|...

    matchete:基于模式匹配的 Ruby 方法重载 DSL

    与用户定义的谓词方法匹配如果任何测试为 arg 返回 true,则on either('#count', Array)匹配on full_match('#count', '#combine')如果所有测试都为 arg 返回 true,则匹配on exact(Integer)匹配特殊值,在其他情况...

    greenletters:Ruby 控制台自动化 a la Expect

    Greenletters 自述文件 概要 请参阅介绍性博客文章。 require 'greenletters' adv = Greenletters :: Process ....# Install a handler ...# Wait for the specified pattern before proceeding adv . wait_for ( :ou

    正则表达式

    4. **Perl**、**PHP**、**Python**、**Ruby**和**VB.NET**等语言也都有相应的正则表达式库和支持,具体用法可以参考各语言的官方文档或相关教程。 #### 六、实战案例分析 由于给定的部分内容仅为重复的URL `...

    正则表达式.pdf

    3. match = pattern.match(string):将正则表达式应用于字符串。 4. print(match.group()):打印匹配结果。 常见的正则表达式模式: 1. ^匹配字符串的开头。 2. $匹配字符串的结尾。 3. .匹配任何单个字符。 4. ...

    timestampcounter

    if match_data = timestamp_pattern.match(line) date_str, hour, minute, period = *match_data.captures # 进行进一步的处理... end end ``` 这里的正则表达式匹配了日期(四位年份、两位月份、两位日期)、...

    Python正则表达式总结

    3. `match(pattern, string, flags)`: 类似于`search`,但`match`只检查字符串的开始位置是否符合模式。如果匹配,返回`MatchObject`,否则返回`None`。 4. `split(pattern, string, maxsplit=0)`: 使用模式`...

    shellcode帮助工具,直接把exe转shellcode

    -search <pattern> get the start offset by the pattern: e.g. PK\x03\x04 -soff <offset> fix the match offset after searching (Default: 0) -off <offset> convert the input file from the offset (Default...

    精通正则表达式~~~

    Ruby测试... 238 Python测试... 238 Tcl测试... 239 常见优化措施... 240 有得必有失... 240 优化各有不同... 241 正则表达式的应用原理... 241 应用之前的优化措施... 242 通过传动装置进行优化... 246 ...

    LFA-ep02-Regex

    - 创建:在Ruby中,可以使用`/pattern/`或 `%r{pattern}` 来创建正则表达式。 - 字符转义:在正则表达式中,需要对特殊字符进行转义,如`\d`、`\s`等。 - 定界符:`^`表示行首,`$`表示行尾,`\A`和`\Z`分别表示...

    when-switch:开关柜JavaScript功能实现

    switch / caseJavaScript功能实现,受Ruby case / when启发。 用法 您可以使用单个表达式以功能方式转换切换用例: 严格平等 import when from 'when-switch' const getDrinkPrice = drink => when ( drink ) . ...

Global site tag (gtag.js) - Google Analytics