`
chelsea
  • 浏览: 121515 次
  • 来自: ...
社区版块
存档分类
最新评论

The Ruby Programming Language Notes

    博客分类:
 
阅读更多

/****************************************

按名称调用

一切都是对象, 且永不关闭

钩子无处不在

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 Ruby Programming Language 介绍

    在《The Ruby Programming Language》这本书中,作者深入浅出地介绍了Ruby的各个方面,从基础语法到高级特性的应用,是学习和理解Ruby的宝贵资源。书中涵盖了类和对象、模块、方法、变量、控制结构、异常处理、正则...

    The Ruby Programming Language (part 1)

    2008新作,是英文版啊. Ruby的作者的作品, part.1 一共两个压缩包 Part 2在http://download.csdn.net/source/424089

    The Ruby Programming Language

    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 2)

    第二个压缩包 The Ruby Programming Language 一共两个压缩包 Part 1在http://download.csdn.net/source/424086

    The Ruby Programming Language 2008 .pdf

    #### 一、关于《The Ruby Programming Language》书籍介绍 - **作者**:本书由David Flanagan与Yukihiro Matsumoto共同编写,这两位作者都是在Ruby社区享有盛誉的人物。David Flanagan是知名的编程书籍作者,而...

    The Ruby Programming Language PDF

    1. Ruby语言介绍:文件标题《The Ruby Programming Language》表明了文档是关于Ruby编程语言的。Ruby是一种流行的开源、动态的面向对象脚本语言,由松本行弘(Yukihiro "Matz" Matsumoto)设计。它以简洁易读的语法...

    The Swift Programming Language中文完整版.pdf

    本书《The Swift Programming Language》中文完整版详细介绍了Swift语言的基础知识、语法特性以及高级特性。 首先,Swift语言的简单值包括常量和变量的声明、数据类型如整数、浮点数,以及类型安全和类型推测的概念...

    The Go Programming Language(Addison,2015)

    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原版

    标题《the_ruby_programming_language原版》指向了一本关于Ruby编程语言的英文原版书籍,该书被标识为学习Ruby语言的必备参考书。这本书不仅为Ruby初学者提供了入门知识,而且被认为是掌握Ruby语言的核心资源。书中...

    The.Go.Programming.Language.0134190440.epub

    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之父学程序设计(第2版)》是为了让完全没有程序设计经验的读者也能灵活地使用Ruby,因此书中详细地说明了各种知识。从程序所需要的变量、常数、方法、类、控制结构等语法的说明,到类的主要...

    Ruby Programming

    《Programming Ruby》被誉为是最好的Ruby编程书籍之一,它不仅详尽地介绍了Ruby语言的基础知识,还深入探讨了Ruby的核心概念和技术细节。这本书由David Thomas、Andy Hunt、Thomas A.EW Matthews和David Heinemeier ...

    The.Ruby.Programming.Language.Jan.2008

    The.Ruby.Programming.Language.Jan.2008

    The boo programming language

    Boo编程语言是一种高级、动态类型的编程语言,它在设计时受到了Python、Ruby以及C#等语言的影响。本文将深入探讨Boo语言的核心特性和应用,以帮助读者全面理解这一独特的编程工具。 Boo语言的设计目标是提供一种...

Global site tag (gtag.js) - Google Analytics