ruby学习笔记(4)-动态修改类的属性
时间:2022-04-23
本文章向大家介绍ruby学习笔记(4)-动态修改类的属性,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
动态语言之所以“动态”,最明显的特征就是:类实例的行为/属性可以在new出后,动态修改!个人觉得这种处理相对java/c#(静态语言)来说,更符合现实世界。 比如:一个人刚出生时,除了哭、吃奶等这些基本原始本能,其它的几乎全都不会(原始本能可理解类定义中最开始定义的属性和方法),但随着时间推移,学会了看书,走路,说话...(相当于新增了方法/属性),再往后的人生谁也无法预料,一切都是未知的,所以不太可能象静态语言那样,在运行前就事先把所有的属性/方法全写齐,甚至一个人后来失忆,把原先学会的东西给忘记了也没准(比如突然不会说话了,相当于把实例的方法/属性给动态删除),后来医治好以后,又能说话了(重新添加某种方法)。
当然我的意思也并非静态语言不好,只能说各有各的特点,最后来一段代码吧:
class Person
def cry
puts "哇..."
end
def eat
puts "吃奶中,请勿打扰..."
end
def showbody
puts "裸奔一下,展示自己的身体" #这个方法写得比较龌龊 ;)
end
end
aPerson = Person.new #创造了一个新生儿
aPerson.cry #刚出生,当然要哭几下
aPerson.eat #哭累了,就吃
aPerson.showbody #小孩子嘛,随便给看一下小JJ无所谓啦
class Person
def read
puts "学会了看书"
end
def walk
puts "学会了走路"
end
end
aPerson.walk
aPerson.read
class Person
undef read #后来因为某种原因,突然不会读书了,也许得了什么怪病吧:)
end
#aPerson.read #这里将报错"undefined method `read' for #<Person:0x39162f0> (NoMethodError)"
class Person
private:showbody #长大了以后,当然就不能随便给陌生人看自己的身体了 :)
end
#aPerson.showbody #将报错:private method `showbody' called for #<Person:0x35d5f70> (NoMethodError)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【教程】抓取网页内视频的五种方法
- 了解 Anaconda
- 【实用】教你识别下载“全家桶”
- 【iOS】修改checkra1n+chimera环境(chimera1n)
- 在 istio 中限制 namespace 访问外部资源
- 【iOS】浅析近期越狱工具+“平刷”工具
- XGBoost Operator源码分析
- 【杂货】制作checkra1n启动盘思路
- 【iOS】chimera13指日可待,libhooker基板独立啦
- 类加载器之URLClassLoader
- 【iOS】较全的合并flex补丁教程
- R语言如何解决线性混合模型中畸形拟合(Singular fit)的问题
- spring代理对象都是代理对象吗
- R语言Markowitz马克维茨投资组合理论分析和可视化
- 支付业务优化else if 代码