Thinking by Writing


  • 首页

  • 标签

  • 分类

  • 归档

  • 搜索

Ruby元编程笔记——类定义

发表于 2017-09-22 | 分类于 Ruby

本章内容理解:讲了Ruby对象模型,并且介绍了几种依赖于此模型的技术。

在Java和C#等语言中,直到你创建了该类的一个对象,然后调用对象的方法才会有实际的工作。

在Ruby中,类的定义有所不同。当使用class关键字时,并非是在指定对象未来的行为方式,相反,实际上是在运行代码。

Ruby对象模型介绍以及七条规则:

1.只有一种对象——要么是普通对象,要么是模块。

类就是对象,是class类的一个实例。类也是一个增强的模块,比模块多了new、allocate、superclass三个方法。

普通对象不可以使用new方法再建立一个实例,模块也是。

2.只有一种方法——它存在于一个模块中,通常是一个类中。

无论是类或模块的实例方法,类方法,都存在于类或模块中。单件方法比较特殊,但也存在于单件类中。

3.只有一种模块——可以是一个普通模块、一个类或者单件类

模块可以是普通模块,可以是一个类,即增强的模块。同时一个普通的模块无法被继承。

阅读全文 »

Ruby元编程笔记——代码块

发表于 2017-09-20 | 分类于 Ruby

本章内容理解:讲了打破封装,随时随地增加或修改变量和方法的技术。

代码块作为“程序中的基本操作元素之一”,是实现下面这些操作的基础:

代码块是闭包,闭包的作用在于,让变量在指定的作用域发挥作用,不会受到作用域外变量的干扰。也在于将变量带到别的作用域。

接下来依次记录块,作用域以及打破封装共享变量的技术操作。

块

1
2
3
4
5
def a_method(a, b)
a + yield(a, b)
end
a_method(1, 2) {|x, y| (x + y) * 3 } #=> 10

通常情况下,如果只有一行,代码块可以通过大括号定义,比如上面的{|x, y| (x + y) * 3 },若有多行,可以通过def...end来定义。

在调用一个方法时才可以定义一个块。块会被直接传递给这个方法,该方法可以用yield关键字调用这个块。

通过Kernel#block_given?()方法来询问当前的方法调用是否包含块。

阅读全文 »

Ruby元编程笔记—— 方法

发表于 2017-09-19 | 分类于 Ruby

在理解了方法查找的基础上,可以在运行时创建方法、插入方法调用、把调用转发给其他对象,甚至调用一个不存在的方法。接下来的元编程技术讲解了如何实现这些操作。

本章的主要内容:

通过元编程技术使代码更加简洁,更有利于扩展和维护。

先来看一段代码,通过重构的过程,逐步了解元编程怎样发挥作用。

  1. 这是一个连接数据库并查询相关信息的data_source类。为节省时间,可直接跳到第三步重构步骤,需要时再跳回来看。
阅读全文 »

Hello World

发表于 2017-04-02

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment

12
Peck Liu

Peck Liu

9 日志
7 分类
9 标签
© 2017 Peck Liu
由 Hexo 强力驱动
|
主题 — NexT.Pisces v5.1.3