摘要:
The boss's mission: 写一个类宏,功能与attr_accessor类似,但会创建经过校验的属性,名字attr_checked。 需求: A Development Plan: 开发计划: 第一步 创建2个拟态方法,读/写 方法。在写方法加入校验属性值是否nil/false. req 阅读全文
摘要:
Code That Writes Code 6.1 Coding your way to the weekend 6.2 Kernel#eval, Binding#eval Binding: Objects of class Binding(类Binding的对象) encapsulate (密封) 阅读全文
摘要:
类宏 环绕别名 singleton class Class就是增强的模块,类定义也就是模块定义。 5.1 Class Definitions Demystified 5.11 Inside Class Definitions 美 [,dɛfɪ'nɪʃən] Self关键字:Ruby的每一行代码都会在 阅读全文
摘要:
第4章代码块blocks 基础知识 作用域:用代码块携带variables through scopes 通过传递block给instance_eval方法来控制作用域。 把block转换为Proc,lambda这样的可反复调用的对象。4.5 4.12基础 def a_method(a,b) a + 阅读全文
摘要:
第3章methods Ruby是动态语言,有静态语言实现不了的技巧。本章讲解代码的重构,把代码变得更简洁。 3.2Dynamic Methods 3.21Calling Methods Dynamically Dynamic Dispatch(动态派发技巧):使用Object#send方法,方法名是 阅读全文
摘要:
《Ruby元编程》 第二章 对象模型 类定义揭秘inside class definitions: class关键字更像一个作用域操作符,核心作用是可以在里面随时定义方法。 [].methods.grep(/^re/):调用 出Array的所有以re开头的method. Monkeypatch:涉及 阅读全文
摘要:
快速二分法的疑点解惑:为啥先右j移动?因为设定a[left]为基准数 思路:(查看了网上的2篇文章,关键点就是谁为基准数,我自己又尝试了不同排序,不同基准数left,right。得出👆的结论) 步骤: 1. 在序列中设a[left]为基准数。最左边设i,最右边设j(目标是从大到小排列) 2. 先从 阅读全文
摘要:
在本章我遇到了c语言的struct数据,即自定义的数据结构。比如: struct edge { int u; int v; int w; }; 题目给了一组数据,用edge储存。需要按照w大小排序。我开始不知道如何用ruby实现,后来想到之前的题目也遇到过(小猫钓鱼)。我定义了一个类,在类中储存了数 阅读全文
摘要:
常见的数据结构 数组(Array) 堆栈(Stack) 队列(Queue) 链表(Linked List) 树(Tree) 图(Graph) 堆(Heap) 散列表(Hash) 第7章,神奇的树。 第一节,树的特点。 1.一个节点到另一个节点只有唯一路径 2.n个节点n-1个边。 3.在一颗树中加一 阅读全文
摘要:
第一节 只有五行的算法Floyd算法 问题:求任意两个城市之间的最短路径?多源最短路径。 解法1:O(n ²)的深度或广度遍历优先搜索 解法2:Floyd,O(n³) Floyd 算法:从i号点到j 号点最多经过k个点的最短路径。--一种动态规划的思想 可以处理边的值为负数的图,但不能处理有负权回路 阅读全文