




已阅读5页,还剩25页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Ruby入门 测试部 1 概要 2 Ruby简介 Ruby概述Ruby是一种为简单快捷的面向对象编程 面向对象程序设计 而创的脚本语言 Ruby程序不是被编译成二进制格式 如Java 而是直接由一个解释器来处理 这门语言在1995年由松本行弘 MatsumotoYukihiro 发布 Ruby可以方便快捷地进行面向对象编程 一句话 简单明了 扩展性强 移植性好 官方网站 http www ruby lang org en 3 Companyname Ruby简介 Ruby的特长语法简单普通的面向对象功能 类 方法调用等 特殊的面向对象功能 Mixin 特殊方法等 操作符重载错误处理功能迭代器和闭包垃圾回收动态载入 取决于系统架构 可移植性高 不仅可以运行在多数UNIX上 还可以运行在DOS Windows Mac BeOS等平台上适合于快速开发 一般开发效率是JAVA的5倍 4 Ruby基本语法 1 Ruby的基本数据类型数字 Ruby数字类型包括整数和浮点型 其中整数分为Fixnum和Bignum两种 Fixnum的范围取决于机器内存大小 在演算过程中 ruby会自动转换变量的类型 5 例 num 1005 timesdonum numputsnum class numendFixnum10000Fixnum100000000Bignum10000000000000000Bignum100000000000000000000000000000000Bignum10000000000000000000000000000000000000000000000000000000000000000 6 字符串 ruby的字符串有多种表达方式 比如 thisisstring thisisstring q thisisstring 相当于 Q thisisstring 相当于 如果我们在一个字符串中包含多个单引号或者双引号 可以用 q或 来表示字符串 如果出现一大段文字作为字符串 可以用分界符 来表示 例如 String EOFAaaa CccccEOF EOF EOF之间输入你想保存的内容 EOF不是指定的 可以是任意的字母组合 但是必须是对称的 7 8 区间 ruby的区间会出现在很多地方 比如循环 条件 间隔 我们举例加以说明 a 0 9 声明变量a为闭区间 0 9a include 9 truea 0 9 声明变量a为开区间 0 9a include 9 false 数组和哈希表 Ruby的数组和哈希表都是存储对象的集合 通过键 key 来访问 数组的键是整数 而哈希表的键可以是任意对象 它们都可以根据要求自动增加自身的长度而不用事先声明长度 Ruby中数组的定义比较灵活 比如arr Array new 你也可以直接写成arr 这两个都定义了一个空的数组 同理哈希表的定义也是如此 ha Hash new或者ha 当我们定义了一个数组后 比如arr 1 two 3 14 需要访问其中的第二个元素 可以通过arr 1 获取 为什么是1 因为数组的起始键值是0 有时候我们创建数组可能遇到这样的情况 arr one two three four 那么多逗号 引号要输入 我们可以简化成arr w onetwothreefour 两个结果是相同的 哈希表的访问是通过hash key 来获取value 比如ha name Tom age 23 putsha name 得到返回值Tom 9 10 符号Symbol Symbol类型我们在ruby中不常用 通常是在字符串前面加冒号 来表示的 比如字符串 abc 用符号表示就是 abc 至于符号对象和字符串对象之间的差异 我们举例子说明 222 object id 23124130 222 object id 23106580 222 object id 211038 222 object id 211038由上面的运行结果得知 我们定义的 222 在两次获取id的时候已经发生改变 而 222 是不变的 由此可见 我们在定义字符串类型对象的时候 两次输出的字符串对象虽然内容相同 但是已经不是同一个对象了 而符号对象却一直是一个 Symbol对象一旦定义就会一直存在 直到程序结束 Ruby的控制结构 Ruby中除了从C和Perl那里继承来的控制结构 还包括一种可以将控制结构抽象化的功能 即带块的方法调用 带块的方法调用使类的设计者可以自己定义一些包括循环在内的控制结构 大致有以下几类结构 条件分支和循环结构条件分支 一 单行if 如果 语句1 if条件 then语句1 语句2 语句 end 语句1 语句2 语句 if条件Eg puts welldone ifscore 100 多行if语句Eg ifage60puts 老年人 elseputs 青年 end 11 12 三 unless 除非 条件语句a 1unlessa 1 和if相反 当判断为false的时候才执行里面的语句puts 111 elseputs 222 end注 Unless不能插入elsif语句块四 case分支条件语句casemonthwhen1puts 一月 when2puts 二月 end 循环结构 while 当 循环Whilei 100 do Putsii 1end二 单行while循环i 0begini 1putsiendwhilei 10三 until 直到 循环i 0untili 10i 1putsiend四 for in循环foriin0 10putsiend 13 14 break 跳出当层循环c a foriin1 4ifi 2andc a 当i 2且c a 时中断循环跳出c b print n breakendprinti c endnext 忽略本次循环的剩余部分 开始下一次的循环c a foriin1 4ifi 2andc a 当i 2且c a 时跳出本次循环执行下一次c b print n nextendprinti c end redo 重新开始循环 还是从这一次开始c a foriin1 4ifi 2andc a 当i 2且c a 时重新开始循环 从执行本次开始c b print n redoendprinti c endretry 重头开始这个循环体c a foriin1 4ifi 2andc a 当i 2且c a 时重新开始循环c b print n retryendprinti c endraise 出现异常时挂起异常begin rescue eputseraiseActiveRecord Rollback raise引发RuntimeError异常ensureputs complete end 15 迭代器 有些方法允许在调用它的过程中添加块或者过程对象 这种特殊的方法就是迭代器 迭代器是为了抽象化控制结构 特别是循环 而设的一种方法 data 1 2 3 data eachdo i printi n enddata 1 2 3 data each i printi n 16 Ruby的变量 类 模块 变量 ruby变量的定义是有一定的规则的 因此我们在定义一个变量以后 ruby可以自动根据命名规则判断出该变量是什么变量 命名规则参考下图 17 局部变量 若标识符首位是小写字母或 则该标识符就是局部变量或方法调用 实例变量 以 开始的变量是实例变量 它属于特定的对象 可以在类或子类的方法中引用实例变量 若引用尚未被初始化的实例变量的话 其值为nil 全局变量 由 开头 它们可以在程序的任何位置访问到 在初始化前 全局变量无需变量声明 引用尚未初始化的全局变量时 其值为nil 18 19 伪变量 ruby的一种特殊变量 有以下几种 Self 当前方法的执行主体Nil NilClass类的唯一实例True TrueClass类的唯一实例False FalseClass类的唯一实例 nil和false表示 伪 FILE 当前源文件名 LINE 当前源文件中的行号注 伪变量的值不可改变 若对伪变量赋值将引发语法错误 常量 以大写字母开头的标识符是常量 常数 已经定义的常量不能被重新赋值 类 在处理复杂事物的时候 用到的一种基本手段就是抽象 抽象的目的就是区别事物之间的本质和不同 面向对象编程 OOP 的实质就是利用类和对象来建立抽象模型 类表示了对象的类别 是创建对象的蓝本 建立一个事物的抽象模型 本质上就是表达该事物的性质和行为 使用类来建立抽象模型 是通过在类中定义变量和方法来实现的 类中定义的属性是一种可存储值的变量 该变量代表着事物的具体性质 类的对象所具有的行是由定义的方法来实现的 类中定义的变量和方法被称为类的成员 20 类的定义 类的实例方法classPerson 类的定义defsay name 类的方法定义puts Heis nameendendobj Person new 类的实例化obj say jack output Heisjack 21 类方法的重写 覆盖 classPersondefsayputs hello enddefsayputs howareyou endendobj Person newobj say output howareyou 22 实例变量这个前面有说过 这里补充一下 实例变量主要是用来记录单个对象的状态 例如 classPersondefsay day sunday enddefbyeputs Ilove day endendobj Person newobj sayobj bye output Ilovesunday 23 初始化对象状态类似其他语言的构造函数 classPersondefinitialize age name age age name nameenddefage ageenddefname nameendendobj Person new 20 Tom putsobj age 20putsobj name Tom 24 语法糖语法糖就是指特别的规则 不符合常规的写法 Ruby提供了调用写方法的语法糖 当解释器看到age 时 会忽略等号前面的空格 并且单参数的方法是可以省略括号 自动生成属性的读写操作attr 如果每个简单的属性都用方法来定义 就太麻烦了 Ruby提供了自动生成读写操作的方法 25 26 classPersonattr accessor ageendobj Person newObj age 20Putsobj age output 20类方法类是特殊的对象 是唯一可以创建新对象的一类对象 定义是在方法前加上类名 classPersondefsayputs hello endend类方法有两种调用方式 Person say Person say 27 继承Ruby中用 实现继承 classCardefcolorputs blu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑工程门窗安装施工方案
- 思维的发生与发展04课件
- 低空经济飞行器维修保养方案
- 养鸭场饲料配方优化方案
- 正常人体解剖学感觉器49课件
- 二零二五年风力发电兼职电工合作协议
- 二零二五年度新能源设备采购合同(货物类)
- 二零二五年度区块链技术竞业禁止与知识产权保护协议
- 2025版环境监测行业联盟合作协议
- 二零二五年度花岗石石材行业企业并购合同规范
- 测振仪使用方法
- GB/T 9871-2008硫化橡胶或热塑性橡胶老化性能的测定拉伸应力松弛试验
- GB/T 26480-2011阀门的检验和试验
- GB/T 19861-2005丙烯酸系阴离子交换树脂强碱基团、弱碱基团和弱酸基团交换容量测定方法
- GB/T 11085-1989散装液态石油产品损耗
- GB 30000.3-2013化学品分类和标签规范第3部分:易燃气体
- (完整版)沪教牛津版小学一至六年级英语单词汇总(最新)
- JJF 1587-2016 数字多用表校准规范-(高清现行)
- 完整课件-西方经济学下册(第二版)
- 机械制图教学通用课件(全套)
- 球阀自动泄压计算
评论
0/150
提交评论