主要观点:作者和 Marco Roth 用 Ruby 犯了各种“罪”并成为 Rubocops 的逃犯,在今年的 Advent of Code 活动中通过重写运算符等操作来解决问题,介绍了 Ruby 的一些特性如 Refinements、运算符重载等,并展示了用这些特性写出的一些看似奇怪但有趣的代码,还提到后续可能会用更多方法来“犯罪”。
关键信息:
- 用 Refinements 重定义 Integer 的位运算符失败,转而使用 Refinements 只在当前代码上下文中修改类。
- 重写 unary
+
和-
运算符来从 Rule 类中提取整数。 - 用 Refinements 重写 Array 的多个方法,如将
sum
变成>=
等。 - 用 metaprogramming 定义新的运算符来别名现有 Array 方法。
- 展示了一段包含多种 Ruby 特性的复杂代码,还提到后续可能的“犯罪”行为。
重要细节: - 在解决 Advent of Code 问题时,不想用常规方法解析输入,而是用
eval
执行表达式并返回 Rule 对象。 - 介绍了 Kevin Newton 关于 Ruby 运算符的博客。
- 展示了各种重写运算符后的代码示例,如
[1, 2, 3, 4] > ->(n) { n + 1 }
等。 - 提到用
method_missing
等方法进行后续“犯罪”行为。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。