-
Zhiming. 2010. Shanghai Library
-
ref
- Programming Ruby 2nd
- The Ruby Way 2nd
- Beginning Ruby: From Novice to Professional 2nd
- The Ruby Programming Language
-
Practice
- 命名约定
- 如何知道一个方法应传值类型
- 文件引用中的嵌套包含
- 标准程序库
- Debug
- Deploy
- 动态代码执行
-
GEM
- rubyforge
-
useful gems
- base64
- Subtopic 2
- format
- how to use
-
Lang
-
数据类型和对象
-
Number
-
Integer
- Fixnum
- 2.times
- 1.upto(10)
- 100downto(1)
- 50.step(100, 5)
- Bignum
- Float
- Complex
- ..
-
Strings
- escape
-
字符串操作符
- +
- <<
- *
- 访问string和sub string
- 迭代
-
小知识
- " & '
- #{....}
- %q %Q
-
Array
- start,end
- push, shift, pop
-
小知识
- %w W
- range
- %q Q
-
Hash
- 字面量
-
Range
-
表示
- 1..10
- 1.0...10.0
- 成员关系
-
Range
- 序列
- 条件
- 间隔
-
符号
- symbol :
- True, False and Nil
-
Object
-
对象引用
- 立即值
-
生命周期
- Initialize
- 对象标识
- 对象的类和对象类型
-
对象判等
- equal?
- eql?
- ===
- =~
- 对象顺序
-
对象转换
- 显示
- 隐式
- 对象拷贝
- 编组对象
- 冻结
- 污染对象
- Enumerables
-
表达式和操作符
-
变量引用
- 全局
- 类变量
- 对象变量
- 局部
- 常量引用
-
方法调用
- 4部分
-
赋值
- 并行
-
操作符
- 比较操作符
- 相等性操作符
- 布尔操作符
- 条件操作符
- 赋值操作符
- defined?操作符
- 语句修饰符
- 非操作符
-
小知识
- 总会返回一个值
- 运算符
- '也是方法
- if/unless
- case
-
语名和控制结构
-
条件
-
if
- else
- elsif
- 作为修饰符的if
- unless
- case
- ? :
-
循环
- while until
- 修饰符的while, until
- for/in
-
迭代器和可枚举对象
-
数值迭代器
- times
- step
-
可枚举对象
- array
- range
- custom
- yield and iterator
- 枚举器
-
代码块
- 语法
- 值
- 和变量作用域
- 向其传实参
-
Blocks and Iterators
- yeiled
- Proc
- Block可作为闭包,即Proc
- lambda
-
改变控制流
- return
- break
- catch/throw
-
Exception
- 异常类和异常对象
- 创建异常
- 抛出异常
- 自定义异常
- 处理导常
- Catch与Throw
- else从句
- ensure从句
- 作为语句修饰符的rescue
- BEGIN .. END
-
线程、纤程和连续体
- 并发的线程
- 协同例程的纤程
-
Symbols
- ==
- =>
- <==>
- < & <<
- @@, @, $
- method?!=
-
Method, Proc, Lambda和闭包
- 虚拟命名参数
- 权限声明
-
定义
- 返回值
- 单键方法
- 取消方法定义
-
方法名
- 操作符方法
- 方法别名
- 方法和圆括号
-
方法参数
- 默认参数值
- 可变长度参数列表和数组
- 可变长度的参数列表
- 类方法、模块方法、实例方法
- 方法最后参数前缀&
- 实参到行参的映射
- 哈希作为有名参数
- 代码块参数
- Summary
-
Proc 和 Lambda
- 创建proc
- 调用Proc和Lambda
- Proc对象的元数
- Proc相等性
- Lambda和Proc的区别在哪
-
闭包
- 闭包和共享变量
- 和绑定
- Methods对象
-
函数式编程
- 复合函数
- 局部应用函数
- 缓存函数
- 符号、方法和Proc
- Summary
-
Classes and Module
-
简述
- 创建类
- 实例化类对象
- 初始化类对象
- 定义to_s
-
属性
- 访问器方法
- reader
- write
- attr_accessor
- 定义操作符
- 用[]访问数组和Hash
- 枚举坐标值
- 可变的类
- 类方法
-
Subtopic 16
- 常量
- 类变量
- 类实例变量
- self 用法
-
方法可见性
- public
- protacted
- private
-
Inheritance
- 继承方法
- 覆盖方法
- 链式调用扩展
- 类方法 继承
- 继承和实例变量
- 继承和类变量
- 常量继承
-
对象创建和初始化
- new, allocate and initialize
- Factory
- dup, clone and initialize_copy
- marshal_dump and marshal_load
- singleton pattern
-
Module
-
as namespaces
- 嵌套命名空间
- Module中包含Class
- Class中包含Module
- as Mixins
- Enumerable
- Comparable
-
加载和请求
- load
- path
- require
- autoloading
-
方法查找
- 类方法查找
- 常量查找
- Class.method && self.method
- 类是开放的
- 类方法,实例方法
-
小知识
-
Object methods
- instance_variables
- a.methods
-
Nested class
- Subtopic 1
-
Structs
- Subtopic 1
-
反射和元编程
- 类型、类和模块
- 对字符串和块进行求值
- 变量和常量
- 方法
- 钩子方法
- 跟踪
- ObjectSpace和GC
-
Platform
-
Regular Expressions
- /P(erl|ython)/
-
Patterns
- 锚点
- 字符类
- 重复
- 替换
- s.sub
- s.gsub
- 编组
- Replace
- 数字和数学运算
- String
- date and time
- 集合
-
File and Dir
-
File
- File.open(path)
- File.new(path, type)
- f.close
- File.exist?
- File.size(path)
-
Dir
- Dir.mkdir("")
- Dir.delete(path)
- Dir.pwd
-
I/O and Database
- gets
- XML
-
DB
- contact
-
Network
- TCP/UDP
- DNS查询
- 连接到TCP
- make TCP Server
- Multi-client server
- Web/HTTP Server
-
Internet
- 请求RUL
- 验证
- 提交form
- Hpricot解析HTML
- Email
- ActionMailer
- Download
- Threads 并发
-
I18N
- jcode ?????
-
Web Fx
- Rails
- Sinatra
- By self
- Ruby Environment