笔记之Ruby(二)

2 篇文章 0 订阅
  这篇是接上一篇关于Ruby的内容

Ruby类的定义:
Ruby有类和对象,同时支持继承。但, 类只能继承自一个叫做超类的类。
一些Ruby的惯例和规则:(这个惯例好像挺好的,一部分可以通用的吧?应该!?)
    类应以大写字母开头,并且一般采用骆驼命名法如CamelCase。实例变量(一个对象有一个值)前必须加上@而类变量(一个类有一个值)前必须加上@@。实例变量和方法名以小写字母开头并采用下划线命名法如underscore_style。常量采用全大写形式如ALL_CAPS.。

          编写Mixin;面对对象语言进行多个类的继承,可以通过多继承来实现,而Ruby,是采用模块实现;用module 定义一个模块,并在类中include 模块,进行多继承;
Ruby中对于枚举和比较,必须实现each方法,<=>操作符(太空操作符);
这些的定义在ruby中一般都已经进行实现了,还增加了一些相对方便的操作,如any? all?进行枚举比较;(觉得方便很多欸!)
元编程,就是“写能写程序的程序”。Rails核心是AciveRecord框架;
          Ruby对类是开放的,可以直接调用class关键字来定义现有的类;(利用重定义,我们可以重定义所有的类,包括基类;这样我们甚至能让Ruby完全瘫痪,比如重定义Class.new方法。对于开放类来说,这里的权衡主要考虑了自由。这种随时重定义任何类或对象的自由,我们就能写出极为通俗易懂的代码。不过,自由越大、能力越强,担负的责任也越重;。

使用method_missing:
     Ruby找不到某个方法时,会调用一个特殊的调用方法显示诊断信息。该特性不仅让Ruby更易于调试,还有可能实现一些有趣的行为。只要覆盖method_missing方法,就可以实现这些行为。

这段是一个表示罗马数字的小代码;这个代码显得很漂亮;)
使用覆盖method_missing方法,是一个很好有趣的方法,但是,这样会使得在调试时变得困难,Ruby不会告诉你找不到某个方法!!!!
关于Ruby的模块:
    说到Ruby最流行的元编程方式,就是模块;
    对于这个模块,要解释这个关键的东东;书上的例子好长,还是直接自己说明好了;
元编程,在定义模块module时include(base) 就是包括到调用这个模块的 目标类,并且在目标雷中添加新的方法等;(这样就可以在类调用包含这个模块是,动态的改变、覆盖、添加这个目标类);
元编程技术的有趣之处在于,程序可以根据它应用时的状态而改变。     
还是给下代码示例吧,不让真的解释不清楚啦~~~

 这个元编程就是这个样子的,可以动态的在调用时改变调用模块类的基类,或者说动态添加调用函数的方法;(在模块中写好添加等的方法)
    一些最出色的Ruby框架,如Builder和ActiveRecord,都会为了改善可读性而特别依赖元编程;;
Ruby 总结:
核心优势:
  • Ruby的纯面向对象可以让你用一致的方法来处理对象。鸭子类型根据对象可提供的方法,而不是对象的继承层次,实现了更佳结合实际的多台设计。Ruby的模块和开放类,使程序员能把行为紧密结合到语法上,这打打超越了类中定义的传统方法和实例变量。

  • Ruby是一门梦幻的脚本语言,可以出色的完成很多任务,大部分主流操作系统都可以使用的语言,是一个不错的脚本语言;

  • Ruby在web开发中有很大的好处,Rails是很成成功的Web开发框架之一,其设计理念以广大为人知的模型——视图——控制器(model-view-controller)泛型为基础;

不足:
  • Ruby当然有の不足之处;那就是性能;

  •   Matez也十分清楚,他写Ruby是为了改善程序员额体验,而不是优化语言的性能。Ruby正是凭借它的许多特性(比开放类、鸭子类型、method_missing等),击败了可编译并由此提升性能的语言;。

  • 还有:并发和面向对象编程:

  • 面向编程:该编程模型成立的一切前提条件,都建立在一种思想(围绕状态包装一系列行为)的基础之上,但通常,状态是会发生改变的;

  • 并发:程序中存在并发时,这种编程策略就会引发严重问题,资源竞争,最严重会无法在并发环境下调试,测试;

  • 类型安全:

  • 鸭子类型,和类开放性,都对类安全性有一定的影响。而且静态类可以提供一整套工具,IDE;而对于Ruby来说就困难多了。


最后,Ruby的核心优势是它的语法和灵活性,根本不足大概就是性能了,不过在很多场合,它的性能还是说得过去的。总之,在面向对象开发中,Ruby算是一门优秀的语言。(我就是觉得开放类,method_missing和模块,还有元编程 这几个很有吸引力欸)

语法简单
普通的 面向对象功能(类,方法调用等)
特殊的 面向对象功能(Mixin,特殊方法等)
错误处理功能
动态载入(取决于系统架构)
可移植性高.不仅可以运行在多数UNIX上,还可以运行在DOS,Windows,Mac,BeOS等平台上
适合于快速开发,一般开发效率是JAVA的5倍
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小_杭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值