最近看了一些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
分享到:
相关推荐
$ 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 ...
(pattern)`: 匹配不包含pattern的情况。 #### 五、总结 通过本文的学习,我们可以了解到Ruby on Rails的一些基础知识点,包括各种字符串处理方法、正则表达式方法、时间处理方法、数组处理方法、验证方法以及枚举...
PASSWORD_PATTERN = /\A[a-zA-Z0-9@#$%^&+=]{8,}\z/ ``` 这个正则表达式要求密码至少8个字符,且包含字母、数字及特殊字符。 3. **自定义验证方法** 在Ruby中,可以创建一个自定义验证方法来检查密码强度。例如...
`match`, `=~` 和 `/pattern/` 是常用的正则表达式操作。 5. **Array** 和 **Hash**:数组是有序元素集合,可以使用索引访问;哈希则是一种键值对的数据结构,通过键来访问值。它们都提供了丰富的操作方法,如 `...
Ruby正则表达式的强大之处还在于它提供了丰富的内置方法来处理字符串,如match、scan、sub、gsub等。这些方法允许程序员以非常灵活和强大的方式对字符串进行搜索和修改。 在编写正则表达式时,需要特别注意特殊字符...
在Ruby中,正则表达式通过斜杠分隔的模式定义,例如`/pattern/`,其中的模式即为正则表达式的规则。 创建正则表达式的一个典型方式是在两个斜线之间编写模式。例如,匹配包含Perl或Python的字符串可以使用`/Perl|...
与用户定义的谓词方法匹配如果任何测试为 arg 返回 true,则on either('#count', Array)匹配on full_match('#count', '#combine')如果所有测试都为 arg 返回 true,则匹配on exact(Integer)匹配特殊值,在其他情况...
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 `...
3. match = pattern.match(string):将正则表达式应用于字符串。 4. print(match.group()):打印匹配结果。 常见的正则表达式模式: 1. ^匹配字符串的开头。 2. $匹配字符串的结尾。 3. .匹配任何单个字符。 4. ...
if match_data = timestamp_pattern.match(line) date_str, hour, minute, period = *match_data.captures # 进行进一步的处理... end end ``` 这里的正则表达式匹配了日期(四位年份、两位月份、两位日期)、...
3. `match(pattern, string, flags)`: 类似于`search`,但`match`只检查字符串的开始位置是否符合模式。如果匹配,返回`MatchObject`,否则返回`None`。 4. `split(pattern, string, maxsplit=0)`: 使用模式`...
-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 ...
- 创建:在Ruby中,可以使用`/pattern/`或 `%r{pattern}` 来创建正则表达式。 - 字符转义:在正则表达式中,需要对特殊字符进行转义,如`\d`、`\s`等。 - 定界符:`^`表示行首,`$`表示行尾,`\A`和`\Z`分别表示...
switch / caseJavaScript功能实现,受Ruby case / when启发。 用法 您可以使用单个表达式以功能方式转换切换用例: 严格平等 import when from 'when-switch' const getDrinkPrice = drink => when ( drink ) . ...