- 线程就是指能在一个程序中处理若干控制流的功能,线程可以共享内存空间。
- 多行注释可以用=begin和=end
- Ruby中用分号”;”来表示一个语句的结束。
- Ruby使用一个约定来帮助它区别一个名字的用法:名字前面的第一个字符表明这个名字的用法。局部变量、方法参数和方法名称应该用一个小写字母开头或者用一个下划线开头;全局变量用美元符作为前缀$;实例变量用@开头;类变量用@@开头;类名、模块名和常量应该用大写字母开头。
- Puts把它的所有参数写出来,每一个参数结束都加入一个换行符,print也写出它的参数,不过没有换行。
- Gets从你的程序的标准输入流中返回一行。一般用来从键盘或文件读入一行数据。
- ==(等于)比较两个对象的值是否相等,返回true,false
- Eql?,比较两个对象的值、类型是否相等,返回true,false
- Equal?,比较两个对象在内存中地址是否相同,返回true、false
- ===,右边的对象是否在左边区间之内,返回true,false
- =~用来比较是否符合一个正则表达式,返回模式在字符串中被匹配的位置,否则返回nil
- Break跳出当层循环;next忽略本次循环的剩余部分,开始下一次的循环,redo,重新开始循环,还是从这一次开始
- Retry可以用在rescue中,可以只用rescue或是ensure,两者都使用时,rescue必须在ensure前。
- 封装、继承、多态是面向对象编程的三个本质特征
- Initialize是初始化方法,相当于Java的构造器
- 不同的子类继承一个父类,不仅子类和父类的行为有变异,而且子类彼此的行为也有差异,这就是多态。
- Ruby语言中,一切都是对象。变量不是对象,变量只是引用某个对象的时候,你看到的一个代号而已。
- Ruby是动态类型语言,不用给任何变量指定数据类型。
- Ruby方法的最后一行语句如果是表达式,表达式的值会被自动返回,最后一行语句如果不是表达式,就什么也不返回。
- 重载方法是指一个类中,方法名相同、参数列表不同的几个方法,调用时根据不同的参数调用不同的方法。方法重载与返回类型无关。
- 覆写方法是指子类有一个方法,方法名、参数列表、返回类型与父类的某个方法完全一致。调用时会调用子类的方法。而屏蔽掉父类的同名方法。注意:子类覆写的方法,其可访问性一定要强于或等同于父类被覆写的同名方法
- 覆写发生在子类和父类之间,当然也可以是子类和父类的父类之间。重载不仅是发生在子类和父类之间,大多数时候,发生在同一个类中。
- Ruby没有重载,只有重写
- 如果一个变量。只能被某个实例对象使用,这样的变量称之为实例变量;如果一个变量,能被某个类的所有实例对象共享,这样的变量称之为类变量
- 类变量,类方法在Java里与之对应的是static变量,static方法
- 在Ruby里,可以给具体的实例对象添加方法,这个方法只属于这个实例对象,我们把这样的方法称之为单例方法
- 单例方法也叫单件方法,定义单例方法,首先要生成一个实例对象,其次,要在方法名前加上对象名和一个点号”.”
- 实例方法,属于类的每个实例对象。单例方法只出现在单个实例对象中
- Public,可以被任何实例对象调用,不存在访问控制
- Protected,可以被定义它的类和其子类访问。可以在类中或子类中指定给实例对象
- Private,可以被定义它的类和其子类访问,不能被实例对象调用
- 方法默认都是public(initialize方法除外,它永远是私有的)
- 定义模块用module…end。模块与类非常相似,但是模块不可以有实例对象。模块不可以有子类。
- 模块提供了一个命名空间(namespace),防止命名冲突
- 模块的第三个作用:实现了类似多重继承的功能
- 通过”<父类名”,一个子类可以得到父类的属性和方法;通过”include模块名”,一个子类可以得到某个模块的常量和方法。类不能被include。
- Include方法为一个类的所有对象包含某个模块,extend方法为一个类的某个对象包含某个模块。
- Require方法包含另一个文件,另一个文件名需要是一个字符串。Load方法也用来包含另一个文件
- Require包含文件,只加载一次,遇到同一文件时自动忽略;不同路径下的同名文件会多次加载。Load包含文件,加载多次,即使是相同路径下同一文件。
- Require,load用来包含文件,include,extend则用于包含模块
- Require加载文件时可以不加后缀名,load加载文件时必须加后缀名
- Require一般情况下用于加载库文件,而load用于加载配置文件
- 正则表达式描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种字串;将匹配的子串做替换;或者从某个串中取出符合某个条件的子串
- =~用来比较是否符合一个正则表达式,返回模式在字符串中被匹配到的位置,否则返回nil
- 每一次yield,块就要被调用一次。Yield还可以带参数调用块。
- 闭包是一段代码,有自己的状态,属性,作用范围,也就是一个可以通过变量引用的对象,称之为过程对象。一个过程对象用proc创建,用call方法来调用