Ruby on Rails 程序设计深入剖析与范例应用第1-6章

2021.4.26

Ruby语言基础

一、常量:首字母大写,尽量全部大写。作用范围:定义常量所在类或模块内部,父类存在与顶层常量重名的常量,在子类中优先引用父类。

二、变量:小写字母或_开头。局部变量作用域在所属的类、模块或者方法内部。全局变量是以$开头的变量,作用域在全局。

三、基本类型:1.数值类型:整数和浮点数。.class可查看当前变量的数据类型。

                         2.字符串:单引号原样输出,双引号可以输出表达式。

四、运算符和表达式:**为乘方运算, 条件表达式?结果1:结果2    三目运算符。并行赋值: a,b=c,d------a=c,b=d

五、范围:值1..值2:包括值1和值2及中间的值,值1...值2:值1到值2,但不包括值2。 to_a:将范围转换为数组。===可判断前者是包含后者。min()/begin()、first():求范围最小。max()/end()/last():求范围最大

.reject{条件}:将范围转化为数组,删除满足条件的元素。.select{}:只选择满足条件的元素组成数组   .each do |i|:循环迭代范围所有元素。

六、散列表:每个hash由key和value组成。符号:a=10   b=:a创建了符号对象。to_s:转换为字符串 to_i:转为整数 to_f:转为浮点数 to_a:转为数组 to_time:转为时间 to_date:转为日期

七、if语句  if elsif else 语句 if修饰句  (unless条件then    语句1;else 语句2; end):条件为假执行1,为真执行2      case语句:case表达式      when值1 then    语句1;.......else 语句n+1;end

       while表达式do   语句块;end    until语句:until条件表达式do  语句  end   (for  in语句):for 变量名 in 集合 do     执行语句;end   loop语句:loop{循环体} break跳出  

       next语句与redo语句:结束本次循环开始下次循环。next先检查条件是否成立开始下次循环 redo语句不检查直接开始下次循环。

八、数组:(1).unshift方法:向数组的头部添加数组元素;(2).push方法:向数组的尾部添加数组元素;(3)<<方法:向数组的尾部添加一个数组元素。shift方法删除头部元素,pop方法删除尾部元素。             截取数组:(1)array[n,m]:截取从索引n开始,长度为m的元素列表,组成新数组;(2)array[n..m]:截取从索引n开始,到索引m的元素列表(包括索引为m的数组元素),组成新数组;(3)array[n…m]:截取从索引n开始,到索引m的元素列表(不包括索引为m的数组元素),组成新数组。  合并数组: 数组1.concat(数组2)。字符串单引号会输出转义字符,双引号不会输出专业字符。.replace("替换内容");

.dup 和 .clone 复制字符串  .equal?("")比较字符串是否相等  

九、正则表达式。1定界符: / 模式 /    修饰符i、m、s、x、u一般放在正则表达式的后面比如 /模式/i表示不区分大小写进行匹配。 预定义字符以\开始后跟一个字母。使用=~运算符配正则表达式返回模式位置。使用/模式/.match(数组)返回实例。

十、类    声明一个类,定义一个方法,关系表达式,实例化一个类,调用定义的方法。     定义类的名称首字母必须大写,#{self}:self关键字可以输出类的名称。类的实例化:对象名=类名.new;调用new关键字实例化一个对象。   使用点(.)操作符调用类中定义好的方法、属性和变量等类成员     Ruby中在调用方法时可以使用方法名后紧跟“()”的形式调用方法如:zhu=Student.new();   构造函数名称必须是initialize 如 def  initialize  name,age  initialize后跟参数。实例化嵌套类时,需要使用“外部类::内部类.new”的格式实例化内部类,还可以使用“class外部类名::内部类名”的格式。    Ruby支持使用类名称直接访问的方法,即类方法。类方法的定义和实例方法的定义不同,定义类方法时,要在方法名前增加类名称。在Ruby中还可以通过“self.类方法名”形式声明类方法         定义类变量的地方和定义实例变量的地方相同,类变量的变量名需要以“@@”开头,并且类变量属于某个类。所以在类的某个实例改变类变量时,所有实例调用的类变量都发生改变。         (1)attr_reader方法:创建只读属性;(2)attr_write方法:创建只写属性;(3)attr_accessor方法:创建读写属性;(4)attr方法:产生读属性和可选写属性。其中,attr方法第二参数值为true将定义读写属性,如果没有设置或者设置为false,将创建只读属性。         继承的语法非常简单,在定义派生类时,只需要在派生类的后面添加“<”和基类名称。           在派生类构造函数中,可以使用super关键字显式调用基类的构造函数,即调用基类的initialize方法。当在派生类方法里使用super关键字时,Ruby会自动把它转换成调用基类中的同名方法。也可以说,在派生类定义与基类同名方法时,使用super关键字保留基类方法的原有代码。

十一、程序会先执行BEGIN块,然后是输出语句,接下来是END块, 多个BEGIN块按照文件加载的顺序执行,而END块以它们出现的相反顺序执行。        模块的定义语法与类相似,只是使用的关键字不同,定义模块时需要使用module关键字,模块中可以像类一样定义实例变量、实例方法、类变量、类方法和属性等,并且在模块中还可以定义类和模块,同样在类中也可以定义模块。        模块被包含在类中,这样类就可以访问模块的实例成员,包含操作由include方法实现。         命名空间 使用“模块名::类名”的形式实例化模块内部的类,然后调用类的实例方法。        创建线程:thread=Thread.new  do   块   End实例化,t=Thread.new  do   线程体; End           在Ruby中通过调用Thread类的current方法可以返回当前运行的线程, 在Ruby中通过调用Thread类的join方法可以挂起当前线程,从而执行指定的线程,直至执行完指定线程,然后再执行挂起的线程。使用Thread类的pass方法可以暂停线程,并执行其他线程。与前面介绍的Thread类方法不同,pass方法是Tread类的类方法,所以需要使用Thread.pass形式调用。要停止一个线程可以调用Thread类的exit方法或者kill方法,这两个方法在停止线程时会将线程完全退出。使用sleep方法可以休眠当前线程一段时间。一旦时间结束,线程会自动从休眠状态变为可执行状态。Ruby语言还可以使用stop方法将一个线程设置成休眠状态,使用wakeup方法唤醒指定线程。           在Ruby中使用rescue语句和ensure语句来捕获异常。rescue语句用于将程序从异常中跳出,前提是程序需要包含在begin和end块中;ensure语句用于处理产生异常之后的清理工作,像系统资源的回收,还可以使用raise语句手动抛出异常。raise语句语法格式如下:  raise异常类的名称, 异常消息字符串

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值