博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ruby学习之类2
阅读量:7046 次
发布时间:2019-06-28

本文共 1492 字,大约阅读时间需要 4 分钟。

1.属性的读写控制

class Mandef initialize(name,sex)@name = name@age = 16@sex = sexend# 只读def get_namereturn @nameend# 只写def set_age(age)@age = ageend# 读写def get_sexreturn @sexenddef set_sex(sex)@sex = sexendendt = Man.new("Jim","male");puts t.get_nameputs t.get_sext.set_sex("man")puts t.get_sext.set_age(22)

 

通过方法来实现属性的控制

2.还有一种简略的写法

class Mandef initialize(name,sex)@name = name@age = 16@sex = sexend# 只读def name@nameend# 只写def age=(age)#这里等号不能有空格@age = ageend# 读写def sex@sexenddef sex=(sex)@sex = sexendendt = Man.new("Jim","male")puts t.nameputs t.sext.sex = "man"puts t.sext.age = 22puts t.age

 

结果:

Jim
male
man
因为age是只写的所以不能读取

3.垃圾收集

Ruby实现了自动的内存管理,实现了垃圾收集。
垃圾收集器使用,有三点需要说明。
(1)收集无用的对象内存空间,避免内存泄漏和程序因内存不断膨胀而崩溃。
(2)判断一个对象的内存空间是否能被清空的标准是,该对象不再被程序中任何一个地方所引用。
(3)垃圾收集器线程定时轮询,在系统的内存过低时会启动释放内存。
GC类中的start方法来实现垃圾收集功能。

4.异常处理

(1)基本结构 Ruby使用begin...rescue...end结构来处理异常。类似于try...catch...finally。
案例:

s = 1begins = 1/0puts srescueputs "error!"end

 

结果:error!因为有错误捕捉到。

(2)重试语句

在捕捉到错误之后,可以通过retry语句重新执行begin块中的内容。
案例:

s = 1begins = 1/0puts srescueputs "error!"retryend

 

如果有错误,会一直报错下去

(3)抛出异常

Ruby中使用raise语句抛出异常,类似于Java中的throw。异常信息可以被全局变量$!获取

beginraise "test"rescueputs "error!"+$!# retryend

 

结果:

error!test

(4)结束清理

Ruby中使用ensure语句来实现语句块的最后清理。不论语句块中是否出现异常,
ensure块都将执行。

s = 1begins = 1/0rescueputs "error!"+$!# retryensure puts "finished!"endputs "------------"s = 1begins = 1/2rescueputs "error!"+$!# retryensure puts "finished!"end

 

结果:

error!divided by 0
finished!
-----------
finished!

 

小结:

Ruby中的类使用跟java大同小异了

转载地址:http://kyzol.baihongyu.com/

你可能感兴趣的文章
css去掉iPhone、iPad默认按钮样式
查看>>
C# - 设计模式 - 观察者模式
查看>>
CentOS7安装MongoDB
查看>>
跟随我在oracle学习php(59)
查看>>
比较好的个人技术博客收录
查看>>
文法翻译
查看>>
设M=5^2003+7^2004+9^2005+11^2006,求证8|M。(整除理论,1.1.8)
查看>>
力扣算法题—058最后一个单词长度
查看>>
Android WebView的使用
查看>>
表单根据不同的提交按钮转向不同的页面操作
查看>>
201621123053《Java程序设计》第五周学习笔记文章
查看>>
Vue实现购物小球抛物线
查看>>
linux的防火墙firewalld和iptables区别和用法
查看>>
网易游戏QA工程师笔试回忆-2012.9【个人题解】
查看>>
详解 JSONP跨域请求的实现
查看>>
Oracle 修改文件所有者
查看>>
CocoaPods could not find compatible versions for pod "xxx": In snapshot (Podfile.lock):
查看>>
python发送邮件
查看>>
SilverLight 5 数据绑定
查看>>
ElasticSearch 结构化搜索全文
查看>>