ruby入门教程 免费篇

合集下载

Ruby编程入门教程

Ruby编程入门教程

Ruby编程入门教程Ruby是一种简洁、灵活且具有强大功能的面向对象编程语言。

它在编程界备受瞩目,并且在各种应用程序开发中广泛使用。

本教程将带领你从零开始学习Ruby编程,掌握基本的语法和概念,并逐步引领你进入更深入的内容。

无需担心,即使你是一个完全的编程初学者,也能够轻松入门Ruby编程。

1. 准备工作在开始学习Ruby编程前,你需要确保电脑中已经安装了Ruby 解释器。

你可以从Ruby官方网站(官网网址)上下载并安装适合你操作系统的版本。

安装完成后,你可以在命令行中输入"ruby -v"来验证是否成功安装。

2. Hello, Ruby!让我们从一个经典的例子开始,编写一个简单的Ruby程序,用于输出"Hello, Ruby!"这句话。

打开任意文本编辑器,新建一个以.rb为后缀的文件,比如hello.rb。

然后将下面的代码复制进去:```rubyputs "Hello, Ruby!"```保存文件后,在命令行中执行以下命令:```bashruby hello.rb```你将看到输出了"Hello, Ruby!",恭喜你成功运行了你的第一个Ruby程序!3. 变量和数据类型在Ruby中,我们可以使用变量来存储和操作数据。

Ruby有以下几种常用的数据类型:- 整数(Integer):用于表示整数,例如:1, 2, 3。

- 浮点数(Float):用于表示带有小数点的数值,例如:3.14, 2.718。

- 字符串(String):用于表示文本数据,例如:"Hello, Ruby!"。

- 布尔值(Boolean):用于表示真或假,只有两个取值:true (真)和false(假)。

以下是一些例子,展示了如何声明和使用变量:```rubynum1 = 10num2 = 5.5name = "Ruby"is_learning = true```4. 条件语句和循环结构条件语句和循环结构是编程中非常重要的概念,它们能够帮助我们根据特定的条件执行不同的代码。

逐步学习Ruby编程语言的基础知识

逐步学习Ruby编程语言的基础知识

逐步学习Ruby编程语言的基础知识Chapter 1: Introduction to Ruby Programming LanguageRuby is a dynamic, object-oriented programming language that was designed to be simple and productive. It was created by Yukihiro Matsumoto in the mid-1990s with the aim of enhancing programmers' productivity and happiness. This chapter will provide an overview of Ruby and its key features.Ruby is known for its elegant syntax, which is easy to read and write. It has a clear and concise syntax that allows developers to express ideas in a natural and straightforward manner. This simplicity is one of the reasons why Ruby is widely adopted by beginners as well as seasoned programmers.One of the key features of Ruby is its object-oriented nature. In Ruby, everything is an object, even numbers and strings. This means that developers can define their own classes and create objects with their own behaviors and attributes. Ruby's object-oriented approach allows for code reusability and modularity, making it easier to maintain and extend applications.Ruby also supports dynamic typing, which means that variables do not have predefined types. This flexibility allows developers to write code without explicitly declaring the type of variables, making the development process faster and more flexible.Chapter 2: Basics of Ruby Programming LanguageIn this chapter, we will explore the basic building blocks of the Ruby programming language. We will cover variables, data types, operators, and control structures.Variables in Ruby are created by assigning a value to a name. Ruby is dynamically typed, so variables do not have a fixed type. This means that a variable can hold any type of data, such as numbers, strings, or even objects.Ruby supports several data types, including integers, floats, strings, booleans, arrays, and hashes. Integers are whole numbers, floats are decimal numbers, strings are sequences of characters, booleans represent true or false values, arrays are ordered collections of objects, and hashes are key-value pairs.Operators in Ruby are used to perform operations on variables and values. It includes arithmetic operators, comparison operators, logical operators, assignment operators, and more. These operators allow developers to manipulate variables and perform computations in their programs.Control structures in Ruby determine the flow of execution in a program. This includes if statements, for loops, while loops, and case statements. These control structures allow developers to make decisions, iterate over collections, and handle different scenarios in their programs.Chapter 3: Functions and Classes in Ruby ProgrammingFunctions and classes are fundamental concepts in Ruby programming. In this chapter, we will cover how to define and use functions and classes in Ruby.Functions, also known as methods in Ruby, allow developers to encapsulate a series of statements into a reusable block of code. This improves code reusability, readability, and organization. Ruby supports both built-in functions and user-defined functions.Classes in Ruby are used to create objects with their own behaviors and attributes. They act as blueprints for creating objects of a particular type. A class defines the properties and methods that an object of that class will have. This promotes code modularity, reusability, and maintainability.In Ruby, objects are created using the `new` keyword followed by the class name. Objects can then invoke methods defined in the class. Classes can also inherit properties and methods from other classes, allowing for code reuse and abstraction.Chapter 4: Error Handling and Object-oriented Design Principles in RubyError handling is an important aspect of any programming language. In this chapter, we will explore how Ruby handles errors and exceptions, as well as some best practices for object-oriented design in Ruby.Ruby provides a built-in mechanism for handling errors and exceptions. It includes the `begin`, `rescue`, and `ensure` keywords, which allow developers to catch and handle exceptions gracefully. Exceptions in Ruby are raised when an error or exceptional condition occurs, and they can be handled at different levels of the program.In terms of object-oriented design principles, Ruby follows the principles of encapsulation, inheritance, and polymorphism. Encapsulation ensures that the internal state of an object is hidden from the outside world and can only be accessed through defined methods. Inheritance allows classes to inherit properties and methods from other classes, promoting code reuse. Polymorphism allows objects of different classes to be treated as if they were the same type, providing flexibility in program design.Chapter 5: Advanced Concepts and Libraries in Ruby ProgrammingRuby provides a wide range of advanced concepts and libraries that enhance the functionality and efficiency of Ruby programs. In this chapter, we will explore some of these concepts and libraries.Metaprogramming is a powerful feature in Ruby that allows developers to write code that can generate or modify other code at runtime. This enables developers to create dynamic and flexible programs. Ruby also provides reflection capabilities, which allow developers to inspect and modify objects and classes at runtime.Ruby has a vast ecosystem of libraries and frameworks that can be used to enhance the development process. These include popular libraries such as Ruby on Rails for web development, RSpec for testing, and Nokogiri for XML and HTML parsing. These libraries provide ready-to-use functionality and promote rapid development.Conclusion:In this article, we have explored the basics of Ruby programming language. We covered the key features of Ruby, including its simplicity, object-oriented nature, and dynamic typing. We also discussed the basics of Ruby programming, including variables, data types, operators, and control structures. We then dived into more advanced topics such as functions, classes, error handling, and object-oriented design principles. Finally, we explored some advanced concepts and libraries in Ruby programming. With this foundational knowledge, readers are now equipped to dive deeper into Ruby programming and develop their own Ruby applications.。

一步一步学Ruby

一步一步学Ruby

一步一步学Ruby1Ruby介绍1.1准备首先下载安装Ruby完成后,在命令行ruby-v检查是否安装正确,ruby提供了很好的irb的环境,直接在命令行敲入irb就可以,然后可以直接运行ruby 语句,这对实验ruby是非常好的环境。

1.2一切皆是对象从上图可以看出,从简单类型,到真、假、空都是对象,方法调用参数也是可选的1.3语句块和迭代器上面两张图可以看出ruby操作循环的便利上图显示的是处理集合的威力上图显示Hash处理的展示1.4表达式和操作符第三行,你看到了吗?第7行,原来字符串也可以乘1.5方法1.5.1自定义方法1.5.2为已有的类添加方法1.6赋值语句为多个变量赋值是比较便利的,下图展示方法是可以返回多个值的。

1.7后缀?检查方法结果是否为真,!立即改变当前对象。

1.8Class和Module上图展示如何用module来组织类,是不是像.Net的命名空间?实际不是,这个我们后面会说到。

1.9gem包管理ruby的第三方插件是用gem方式来管理,这是一个非常容易发布和共享,一个简单的命令就可以安装上第三方的扩展库。

geminstallrails安装rubyonrailsgemlist列出所有安装的ruby包gemenviroment显示gem的配置gemupdaterails更新指定的包gemupdate更新所有的包gemupdate--system更新gem自身gemuninstallrails卸载指定的包2变量,常量2.1变量2.1.1局部变量以小写字母或下划线开头的标识符在Ruby中即为局部变量(如果引用未被声明的标识符则会被解释成无参数的方法调用),局部变量只在代码段类有效。

2.1.2全局变量,实例变量,类变量$全局变量,所有的实例都能访问@实例变量,只能在实例内部访问@@类变量,这个相当于C#的类静态成员2.1.3伪变量在Ruby中有一种被称为伪变量的标识符,伪变量有一点像环境变量,同时它也是只读的。

Ruby语言入门教程

Ruby语言入门教程

Ruby语言入门教程Version0.6编著张开川kaichuan_zhang@目录自序 (3)第一章概述 (4)1.1编程语言的发展简史 (4)1.2编程其实很容易 (5)1.3Ruby的由来 (6)1.4Ruby的特性 (7)第二章 (8)2.1下载Ruby1.8.5 (8)2.2安装Ruby1.8.5for Windows (8)2.3开始第一个小程序 (10)2.4ruby语言的集成开发环境 (12)第三章语法快览 (14)3.1注释与分行 (14)3.2分隔符 (15)3.3关键字 (16)3.4运算符 (17)3.5标识名和变量的作用域 (19)3.6类库 (19)3.7数据类型 (20)3.8赋值和条件运算符 (21)3.9条件判断语句 (22)3.10循环语句 (24)3.11常与线程 (29)3.12一个综合小练习 (30)第四章一切都是对象 (31)4.1两种思维方式 (31)4.2对象 (32)4.3封装 (33)4.4继承 (34)4.5多态36小跋37自序其它编程语言的学习都主要来自于书本,而Ruby的学习却是完全经由网络。

我想,回报网络的最好方式就是在网络上还没有Ruby中文书籍的时候,编著一本Ruby中文入门教材。

感谢编程语言发展史上的前辈们;感谢网络论坛上程序员们或是理智,或是激烈的讨论;感谢一切看到这本书的人。

曾经经受了SCJP的挖掘、挖掘、再挖掘(基于1.4,还没有Java5,Java6的许多特性),初遇Ruby,觉得十分亲切,仿佛童年时得到一个新奇的玩具。

把玩之后,才发现玩具的塑料外壳里,藏着一把瑞士军刀。

自此,模式、框架常常变得多余,很多时候可以更直接。

好比在量子时代,星际航行只是一次时空转换而已,航天飞机静静地躺在博物馆里,那是旧时代科学的极致代表。

从物理课本中,我们感受到爱因斯坦的伟大,但对牛顿则怀以更加崇敬的心情。

身体终将消逝,而你,我,他——我们的意识却将在网络中延续。

Ruby基础学习

Ruby基础学习

Ruby笔记Ruby 里require,load 和in elude 区别:1、requre,load用于文件,如.rb等等结尾的文件。

2、in elude则用于包含一个文件(.rb等结尾的文件)中的模块。

3、requre —般情况下用于加载库文件,而load则用于加载配置文件。

4、requre加载一次,load可加载多次。

• “ require ”和 "load ”用途是一致的,用来载入新的程式库,“ in elude ”是用来mix-in模组。

•require可载入某个a.rb档案,且可以省略” .rb ” .而且它只会在第一次的时候载入,若再次require时就会忽略。

require 'a'a = A.new•load和require 一样但要用a.rb全名,且每次一定会重新载入。

load 'a.rb'a = A.new•inelude用来mix-in某个模组,可以減少书写的长度。

require 'webriek'in elude WEBriek// 可以不用server = WEBrick::HTTPServer.new(...)用server = HTTPServer.new(...)•如果说abe.rb中包含一个模块Ma,和几个类Ca,Cb等等。

那么你若想在ef.rb文件中使用abe.rb中的资源,你得这样:require 'abe.rb'若还想在ef.rb的某个类中使用abe.rb中的模块,则应在这个类中加入in elude Ma如果你只想在ef.rb文件的某个类中使用abe.rb的模块,你得这样:require 'abe.rb'in elude MaRuby 里p,puts 和print 区别:在rails开发中,最基本的检测错误的方法,莫过于puts和p的输出了。

•p 和print 一样。

快速上手使用Ruby进行Web开发

快速上手使用Ruby进行Web开发

快速上手使用Ruby进行Web开发第一章:引言Ruby是一种简单、灵活且高效的编程语言,尤其适用于Web开发。

本文将介绍如何快速上手使用Ruby进行Web开发。

我们将分为以下几个章节逐步展开。

第二章:环境设置为了开始使用Ruby进行Web开发,我们首先需要设置开发环境。

请按照以下步骤进行操作:1. 下载和安装Ruby解释器:在Ruby官方网站上下载最新版本的Ruby解释器,并按照安装指南进行安装。

2. 安装RubyGems:RubyGems是Ruby的软件包管理器,它可以帮助我们方便地安装和管理Ruby库。

在命令行中运行`gem install rubygems`进行安装。

3. 安装Bundler:Bundler是一个用于管理项目依赖关系的工具。

在命令行中运行`gem install bundler`进行安装。

第三章:Web框架Ruby有许多流行的Web框架可供选择,比如Ruby on Rails和Sinatra。

这些框架可以帮助我们快速构建Web应用程序。

在本章中,我们将选择其中一个框架来进行介绍。

我们将以Ruby on Rails为例。

Rails是一个基于MVC(Model-View-Controller)架构的高效Web开发框架。

以下是使用Rails进行Web开发的基本步骤:1. 创建一个新的Rails应用程序:在命令行中运行`rails new myapp`,其中`myapp`是你的应用程序名称。

2. 定义数据模型:使用Rails的生成器命令来创建数据库表格和模型类。

例如,运行`rails generate model User name:string email:string`将创建一个用户模型。

3. 设计和实现控制器:使用控制器来处理请求并决定如何响应。

运行`rails generate controller Welcome index`将创建一个欢迎页面的控制器。

4. 创建视图:视图是用户界面的一部分,它用于展示数据和接受用户输入。

ruby 教程

ruby 教程

ruby 教程Ruby 是一种动态、面向对象的编程语言。

它的设计哲学之一是“程序员的幸福感”。

本教程将带你由浅入深地了解 Ruby 的基本语法和常用功能。

首先,让我们来讨论 Ruby 的变量。

在 Ruby 中,你可以直接声明变量并赋值,无需显式地标明变量的类型。

例如,你可以这样声明一个变量并赋值:```rubyname = "Ruby"```Ruby 还有一些内置的数据类型,比如字符串、数值和数组。

字符串可以使用单引号或双引号来表示。

数值可以是整数或浮点数。

数组是一个有序集合,可以存储多个元素。

```rubymessage = 'Hello, world!'count = 10prices = [9.99, 10.99, 5.99]```Ruby 还有一些常用的控制结构,比如条件语句和循环语句。

条件语句使你能够根据不同的条件执行不同的代码块。

```rubyif count > 0puts "The count is positive."elsif count < 0puts "The count is negative."elseputs "The count is zero."end```循环语句允许你重复执行一段代码。

Ruby 提供了多种循环语句的选择,比如 `while`、`for` 和 `each`。

```rubywhile count > 0puts countcount -= 1endfor i in 1..5puts iendprices.each do |price|puts priceend```除了内置的功能,Ruby 还可以使用各种类库来扩展其功能。

类库提供了许多现成的功能和工具,使你能够更快地开发程序。

这只是 Ruby 的一小部分基础知识,还有很多其他有趣的功能等待你去探索。

RUBY简要操作

RUBY简要操作

RUBY简要操作Ruby是一种动态、面向对象的编程语言。

它具有简洁的语法、强大的可扩展性和丰富的标准库,被广泛应用于Web开发、数据分析和自动化测试等领域。

本文将从基础操作、控制流、函数和类等方面对Ruby进行简要介绍,帮助初学者快速上手。

一、基础操作1.输出和输入使用puts语句可以输出字符串或变量的值:```rubyputs "Hello, World!"```使用gets方法可以从控制台获取用户的输入:```rubyname = gets.chompputs "Hello, #{name}!"```2.变量和常量Ruby使用变量存储数据,不需要提前声明变量类型:```rubyx=10y=5.5message = "Hello, Ruby!"```Ruby中的常量以大写字母开头,习惯上用全大写表示:```ruby```3.数据类型Ruby中的主要数据类型包括整数(Integer)、浮点数(Float)、字符串(String)、布尔值(Boolean)和数组(Array)等:```rubyx=10y=5.5name = "Ruby"is_true = truearray = [1, 2, 3]```4.数组和哈希数组是有序的元素集合,可以通过索引获取或修改其中的元素:```rubyfruits = ["apple", "banana", "orange"]puts fruits[0] #输出apple```哈希是键值对的集合,可以根据键获取或修改对应的值:```rubystudent = {"name" => "Alice", "age" => 18}puts student["name"] #输出Alice```二、控制流1.条件判断Ruby中的条件判断使用if、elsif和else关键字:```rubyx=10if x > 5puts "x is greater than 5"elsif x == 5puts "x is equal to 5"elseputs "x is less than 5"end```2.循环Ruby中的循环有三种方式:while、for和each。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

介绍这是一个短小的Ruby入门,完全读完只需20分钟。

这里假设读者已经安装了Ruby,如果你没有安装的话,请在阅读文前访问Ruby 官方网站进行下载并安装。

交互式的Ruby打开IRB(交互式Ruby外壳):如果你使用Mac OS X,那么请打开终端窗口输入irb;如果你使用Linux,那么请打开shell输入irb;如果你使用windows,那么请在开始菜单中找到Ruby->fxri,并执行它。

Ok,在打开IRB之后,在其中输入"Hello World"。

Ruby听从你的安排!发生了什么?我们刚才编写了世界上最短小的“Hello World”程序吗?这么说不太确切。

第二行输出是IRB告诉我们:上一个表达式的评估结果。

如果我们希望打印出“Hello World”,那么就还需要一点努力:puts在Ruby中是一个简单的打印输出命令。

后面的“=>nil”表示什么?——那是表达式的结果。

Puts总是返回nil,这是Ruby中表示“绝对无值”(absolutely-positively-nothing value)的方式,看上去有些类似Java中的null。

你的免费计算器在这里!无需做什么,我们就能把IRB作为一个简单的计算器使用:这样就能计算3+2。

够简单的!那么3乘以2如何?你可以在下面继续输入3*2,也可以回到上面(3+2处)重新修改你刚刚输入的计算公式。

使用键盘上的向上键,使光标到达3+2那一行,再用左键移动光标到加号上,然后使用空格键进行修改。

下面,让我们尝试计算3的平方:在Ruby语言中,**表示幂运算。

那么如何计算平方根呢?Ok,等一下,表达式中的sqrt(9)表示什么?你一定能猜到这是计算9的平方根。

而Math表示什么?不要着急,下面就让我们进一步了解像Math这样的模块。

模块——按照主题分组的代码Math是Ruby内建的数学模块。

在Ruby中,模块提供了两种角色:一种角色是将类似的方法聚集在同一个“家族”名下。

因此,Math 也包括sin、tan这样的方法。

第二种角色是一个圆点(dot),它标记了消息的接收者。

什么是消息?在上面的例子中,sqrt(9)便是消息,它意味着调用sqrt方法取出9的平方根。

Sqrt方法调用的结果是3.0。

你可能注意到它并不是3。

这是因为多数情况下,数字的平方根并不是整数,所以这里返回了一个浮点数。

那么我们如何记住这些计算结果呢?——将结果赋值给变量。

如何定义方法?如何才能方便省事地随意输出字符串,而无需过多地劳烦我们的手指呢?——我们需要定义一个方法!上面的代码中第一行“def h”标志着方法定义的开始。

它告诉Ruby 我们正在定义一个名为h的方法。

下面一行是方法体:puts"Hello World"。

最后,也就是第三行“end”通知Ruby我们完成了方法定义。

Ruby的回应“=>nil”告诉我们它已经知道我们定义了此方法。

简短、重复地调用方法现在,让我们尝试多次执行这个方法:哈,这太容易了。

在Ruby中调用某个方法只需将方法名提交给Ruby。

当然,这是在方法没有参数的情况下。

如果你愿意也可以添加一个空白的括号,但是这没有必要。

如果我们想对某个人说hello而不是整个“世界”(world),那该怎么做?——重定义h方法使它接收name参数。

嗯,现在看来工作正常。

字符串中的奥秘“#{name}”是什么意思?这是Ruby在某个字符串中插入其它字符的方式。

在大括号之间放入的字符串(这里是指name)将被外部的字符串代替。

你也可以使用字符串类内建的capitalize方法来确保某人名字的首字母大写:上面的代码有两个地方需要说明:第一,我们通过无括号的方式调用方法,因为括号是可选的;第二,这里的默认参数值为“World”。

也就是说在调用方法时如果没有提供name参数,则使用默认值“World”。

进化为Greeter!我们是否需要一个真正的问候者(greeter),他能记住你的名字、问候你、总是尊重地向你示好?那么这就最好建立一个“Greeter”类:在上面的类代码中定义了一个称为Greeter的类和一些类方法,其中出现了一些新的“关键词”:请注意“@name”,它是类的实例变量,并对类中的所有方法(say_hi和say_bye方法)都有效。

如何让Greeter类发挥作用?现在让我们来建立一个Greeter对象并使用它!Greeter类的实例对象g被建立后,它便接受了name参数(值为Pat)。

那么我们能直接访问name吗?看看上面的编译错误来看,这样直接访问name是行不通的。

窥视对象的内部对象中的实例变量总是隐藏于其中,但也并非毫无踪迹可寻,通过审查(inspect)对象便会见到它们。

当然还有其它的访问方法,但是Ruby采用了良好的面向对象的方式来保持数据的隐藏性。

喔!这么多方法,可是我们只定义了两个方法呀?其它的方法又出自何处?不要担心,instance_methods方法列出了Greeter对象的所有方法,其中包括父类中定义的方法。

如果我们只想对Greeter类的方法进行列表的话,那么把false作为参数调用instance_methods方法即可。

false意味着我们不需要父类定义的方法。

哈哈,这才是我们想要的。

下面让我们看看Greeter对象能回应哪些方法:它知道say_hi、to_s(此方法将对象转换为字符串,是任何对象都必备的默认方法,很想Java中的toString方法),但它不知道name。

随时修改类定义如何才能查看或者修改name呢?Ruby提供了访问对象变量的简单方法:在Ruby语言中,你能够多次打开某个类并修改它。

而修改所带来的变化将应用在此后建立的任何新对象中、甚至现存的此类对象中。

下面让我们建立一个新对象并访问它的@name属性。

我们通过使用attr_accessor定义了两个方法:“.name”用来获取name属性值;“.name=”用来设置namee属性值。

这很类似在Java类中访问被Public修饰的成员变量。

向每个人问候,MegaGreeter不会漏掉一个人Greeter并不完美,因为它只能一次服务一个人。

所以我们在这里设计一个能够一次向全世界、世界上每个人或者在名单中的人发送问候的MegaGreeter类。

在这里,我们将放弃从前的IRB交互模式,转而改为编写Ruby程序文件。

退出IRB的方法:输入“quit”、“exit”或者按下Control+D的组合键。

保存上面的代码到名为“ri20min.rb”的文件中,并使用“ruby ri20min.rb”的命令执行它。

程序输出如下:下面我们将深入了解一下上面的代码。

请注意上面代码中的起始行,它以#开头。

在Ruby语言中,任何以#开头的行都被视为注释,并被解释程序忽略。

我们的say_hi方法已经发生了变化:它查找@names参数并按照其参数值作出决定:如果参数值为nil,它将打印三个圆点。

那么@names.respond_to?("each")表示什么?循环——也叫迭代如果@names对象具有each方法,那么它是可以被迭代的,进而可以对其进行迭代,从而问候列表中每个人。

如果@names不具备each 方法,则将它自动转换为字符串,并执行默认的问候。

each是一种方法,它接受一个代码块(block of code),然后针对列表中的每个成员执行这个代码块,而在do和end之间的部分便是这个非常类似匿名函数的代码块。

在管道符之间的变量是代码块的参数name,它作为代码块参数被绑定为列表成员,而代码块puts"Hello #{name}!"将使用这个参数进行输出。

大多数其它的编程语言使用循环遍历列表,下面是C语言的循环示例:上面的代码显然可以工作,但它不够“优雅”!你不得不用i这个多余的循环变量,还需要指出列表的长度,然后再解释如何遍历列表。

Ruby的迭代方式则更加优雅,所有的内部管理细节都隐藏在each 方法中,你所需做的就是告诉它如何处理其中的每个成员。

块(block),Ruby边缘的高亮点!块(block)的真正优势在于:能够处理比列表更加复杂的对象。

除了在方法中可以处理简单的内部管理细节外,你还能处理setup、teardown和所有错误,而不让用户有所察觉。

say_bye方法没有使用each,而是检查@names是否具有join方法,如果具有join方法,则调用join方法。

否则它将直接打印@names 变量。

此方法并不关心变量的实际类型,这依赖于它所支持的那些被称为“Duck Typing”的方法:duck typing是动态类型的一种形式:变量的值自身隐含地决定了了变量的行为。

这暗示了某个对象与其它实现了相同接口的对象之间是可交换的,不管对象之间是否具有继承关系。

鸭子测试(duck test)是对duck typing的一种形象比喻——“如果它走路像鸭子,那么也一定像鸭子一样呷呷地叫,那么它必定是一只鸭子”。

duck typing是某些编程语言的特性:如Smalltalk,Python,Ruby, ColdFusion。

Duck Typing的益处是无需对变量的类型进行严格地限制,如果某人使用一种新类型的列表类,只要它实现了与其它列表相同语义的join方法,便可以拿来使用。

启动脚本文件上半部分是MegaGreeter类的代码,而后面剩下的部分则是对这些类方法的调用。

而这是我们最后值得注意的一点:__FILE__是一个“具有魔力”的变量,它代表了当前文件名。

$0是用于启动程序的文件名。

那么代码“if__FILE__==$0”便意味着检查此文件是否为将被使用的主程序文件。

这样做可以使程序文件作为代码库使用,而不是可执行代码;但当此文件被用作执行文件时,也可被执行。

感谢阅读此文。

相关文档
最新文档