- 浏览: 121598 次
- 来自: ...
-
文章分类
最新评论
/****************************************
按名称调用
一切都是对象, 且永不关闭
钩子无处不在
yield/block/proc/lambda, 一等公民
符号与哈希
模块/类/实例, 随意组装
****************************************/
关于风格
不会区分什么 primitive type 和 class type
类和对象永不关闭, 你可以随时为现存的类添加各种方法, 让其表达能力/可读性更强 (3.hours 而不是 Time.hours(3))
符号, 完美的标识
哈希表字面构造, 模拟命名参数
简约而不简单, 数组和哈希几乎主宰一切.
参数列表, 括号可省略
Block参数, 就地扩展, 无需继承或定义单独的函数. (消除了 Java 中匿名内部类的需要)
Proc是一级公民, 对象式和函数式的完美结合
关于动态
按名称调用, Duck Typing, 而不是按类型: 我接触的两种动态语言 Python和Ruby 都是这个样子的. 继承在这类语言中彻底沦为代码复用的一种可选手段, 而不是什么面向对象的核心机制. 面向对象的本质特征其实就是一个多态.
按名称调用, 就是运行时的泛型. (从C++程序员的观点来看)
类和对象永不关闭, 你可以随时为你的类和对象添加它原本不支持的行为
执行过程中的钩子, 关键的步骤你都可以钩入你的代码. 最广泛使用的 method_missing.
任何语句几乎都是函数调用, 都在运行时被解释.
解释器级别的原语, 如 send(:method_name), response_to?(:method_name), block_given? frozen? 等
解释器级别的知识, 或元数据, 关于对象的一切信息
任何已有函数都可以重定义, 包括操作符. (全局范围内的影响, 最好不要重定义核心类的方法)
关于结构
类和对象永不关闭
用模块对概念/能力/行为建模, 用模块来组装类.
模块, 其实就是泛型算法. (从C++程序员的观点来看)
Duck Typing, 就是 模板 中的 Concept, 对参数在"能力"方面而不是"类型"方面的要求 (从C++程序员的观点来看)
container/iterator/block, 与 STL 的 container/iterator/functor 类似, 只不过一个是语言级别的支持, 一个是类库级别的支持, 一个是与生俱来, 一个是后天发明, 对使用者的影响也是差别巨大, 只能说STL来的太晚了
在动态语言中, 类型只是设计时组织代码逻辑, 对问题建模的一种方式, 运行时则无关紧要. 传统的接口, 面向对象的核心概念之一, 变得可有可无. 原先的接口继承和实现继承, 也只剩实现继承在发挥作用, 而 mixin, 则相当于多重实现继承的实现.
继承在异常体系中发挥作用, 是因为有时只需要 rescue 整个层次. (关于异常处理, 没有其它的方法来代替继承吗?)
其它
.freeze, const, 完全自动化的unmodifiedList, unmodifiedMap...
method(:method_name), instance_method(:method_name), 获取函数指针, 然后绑定到不同对象.
protected, private 是控制到对象的
Proc 和 lambda. 目前的版本, Proc 和 lambda 都是闭包, 但Proc里面的return, 像 C/C++ 中的Macro中的return, 会跳出调用者函数体.
并行赋值 a, b = b, a
默认参数可引用前面参数
Range, 曾被收录于<<分析模式>>, 估计被实现了无数次, Ruby终于内建支持
yield: 用来实现 Iterator, Template Method
block, proc, lambda: 可用作 Command, Strategy 的载体
赋值语句的值总是参数的值, 而不是方法的返回值
不会自动为属性赋值函数加self.前缀, 只会把它当作局部变量
惯用法
使用以符号为key的hash做参数, 以便模拟 keyword argument
类内优先使用self,不用类名
查询方法要带? , 修改方法要带 !
发表评论
-
The Object Primer
2004-12-11 11:21 6091,书名 被翻译成“ ... -
错误处理规范
2004-12-11 16:47 768错误处理规范 〇、概念澄清 概念 解释 错误 ... -
Java,误解为何如此之深
2005-08-24 13:50 599前几天被电话面试,问J ... -
Java:画蛇添足的编码规范
2005-09-02 13:13 646前几天公司培训编码规范: 第n条: ... -
synchronized : 规则, 推论与实践
2007-07-23 22:32 48814.3.Synchronization. Rule ... -
交互设计: 股市帮凶
2008-05-04 21:30 661同事 Y 在线操作股票时, 把"买入"点成 ... -
交互设计: 火车上的厕所
2008-05-26 17:17 627有人在动车组的厕所前等了很久, 直到乘务员路过说厕所是被锁住了 ... -
设计原则与模式: 案例介绍--CppUnit
2008-06-01 20:15 658设计原则与模式: 案例介绍--CppUnit CppUnit ... -
工作流:形参,实参,相关数据
2004-12-11 11:40 688关于形参,实参,相关数据 一、形参(FormalParame ... -
工作流:第一次发版,过程总结
2004-12-11 11:42 720交流 即时讨论:小组成员咫尺之遥,有问题立即提出并解决 ... -
工作流:第一次发版,设计总结
2004-12-11 11:43 634整体 面向接口:消息系统,持久系统等,其实现都是可替换 ... -
Beyond Workflow : An Introduction to Vitria BusinessWare
2005-09-26 10:13 812一、简介 Busines ... -
Vitria BusinessWare: 存储与访问安全
2006-03-26 15:45 764事实上,BusinessWare使用LDAP做为存储机制和 ... -
Vitria BusinessWare: 平台与软件总线
2006-04-01 12:59 871经过一段时间的使用 ... -
Vitria BusinessWare: Web Services
2006-04-01 14:30 778BusinessWare的Web Services ... -
Web Services:自洽,编码,交换模型
2006-04-01 16:02 7061, 自洽 以前曾经写过: 目前WebServi ... -
Web Services:WSDL 1.1 规范中的几个错误
2006-04-01 16:40 749读完了WSDL 1.1的规范,令人惊讶的是发现似乎例子中有几个 ... -
C++/CLI:被忽视的集成技术
2006-05-17 20:02 793十几行代码,就使一个重要的旧系统组件,完全融入了基于.Ne ... -
AJP/JK:异构Web平台的集成技术
2006-05-25 21:44 731Tomcat Connector 可以将Tomcat ... -
Vitria BusinessWare: 事件与端口
2006-05-27 17:24 705Event BusinessWare是一个事件驱动的系统 ...
相关推荐
在《The Ruby Programming Language》这本书中,作者深入浅出地介绍了Ruby的各个方面,从基础语法到高级特性的应用,是学习和理解Ruby的宝贵资源。书中涵盖了类和对象、模块、方法、变量、控制结构、异常处理、正则...
2008新作,是英文版啊. Ruby的作者的作品, part.1 一共两个压缩包 Part 2在http://download.csdn.net/source/424089
The Ruby Programming Language is the authoritative guide to Ruby and provides comprehensive coverage of versions 1.8 and 1.9 of the language.
第二个压缩包 The Ruby Programming Language 一共两个压缩包 Part 1在http://download.csdn.net/source/424086
#### 一、关于《The Ruby Programming Language》书籍介绍 - **作者**:本书由David Flanagan与Yukihiro Matsumoto共同编写,这两位作者都是在Ruby社区享有盛誉的人物。David Flanagan是知名的编程书籍作者,而...
1. Ruby语言介绍:文件标题《The Ruby Programming Language》表明了文档是关于Ruby编程语言的。Ruby是一种流行的开源、动态的面向对象脚本语言,由松本行弘(Yukihiro "Matz" Matsumoto)设计。它以简洁易读的语法...
本书《The Swift Programming Language》中文完整版详细介绍了Swift语言的基础知识、语法特性以及高级特性。 首先,Swift语言的简单值包括常量和变量的声明、数据类型如整数、浮点数,以及类型安全和类型推测的概念...
The book does not assume prior knowledge of Go nor experience with any specific language, so you'll find it accessible whether you're most comfortable with JavaScript, Ruby, Python, Java, or C++. ...
标题《the_ruby_programming_language原版》指向了一本关于Ruby编程语言的英文原版书籍,该书被标识为学习Ruby语言的必备参考书。这本书不仅为Ruby初学者提供了入门知识,而且被认为是掌握Ruby语言的核心资源。书中...
The book does not assume prior knowledge of Go nor experience with any specific language, so you’ll find it accessible whether you’re most comfortable with JavaScript, Ruby, Python, Java, or C++. ...
《Ruby Programming:向Ruby之父学程序设计(第2版)》是为了让完全没有程序设计经验的读者也能灵活地使用Ruby,因此书中详细地说明了各种知识。从程序所需要的变量、常数、方法、类、控制结构等语法的说明,到类的主要...
《Programming Ruby》被誉为是最好的Ruby编程书籍之一,它不仅详尽地介绍了Ruby语言的基础知识,还深入探讨了Ruby的核心概念和技术细节。这本书由David Thomas、Andy Hunt、Thomas A.EW Matthews和David Heinemeier ...
The.Ruby.Programming.Language.Jan.2008
Boo编程语言是一种高级、动态类型的编程语言,它在设计时受到了Python、Ruby以及C#等语言的影响。本文将深入探讨Boo语言的核心特性和应用,以帮助读者全面理解这一独特的编程工具。 Boo语言的设计目标是提供一种...