Ruby

Day 8:Ruby 字符串,符号,数字,日期

2016年9月11日 下午6:46 **

字符串

String 与 Symbol 这两个类提供了表示文字与处理文字的功能。这两个类之间很不同。

字符串表示

一个字符串一般用一组引号包装:

"这就是一个字符串"

单引号也行:

'我也是个字符串'

使用字符插值的时候得用双引号:

puts "二加二等于 #{2 + 2}"
puts '二加二等于 #{2 + 2}'

输出的内容是:

二加二等于 4
二加二等于 #{2 + 2}

单引与双引在 escape 时的区别:

Day 7:Ruby 内置类

2016年9月10日 下午4:17 ***

Ruby 的字面构造器

Ruby 大部分的内置类可以使用 new 来实例化:

str = String.new
arr = Array.new

有些类不能使用 new 来实例化,比如 Integer 类。有些内置类可以使用字面构造器,就是不需要使用 new ,可以使用一种特别的形式来创建类的实例。

Day 6:Ruby 控制流

2016年9月8日  下午7:12 ***

之前我们见过方法的调用,它会让程序从调用方法的地方跳到方法的定义主体那里。程序并不是按直线运行的,执行的顺序会受到一些规则还有一些被称为控制流的程序设计结构的影响。

Ruby 的控制流有下面这些:

  • 条件执行(Conditional execution)— 根据表达式的真实性执行。
  • 循环(Looping)— 一块儿重复执行的代码。
  • 迭代(Iteration)— 调用方法的时候给它提供一块儿代码,方法在它执行的时候可以多次调用这块代码。
  • 异常(Exceptions)— 处理异常情况。

按条件执行代码

Ruby 提供了一些基于条件控制程序流的方法。有两大类,if 还有 case 。

if 跟它的朋友们

if 用起来像这样:

if condition
  # condition 如果是 true 就执行这里的代码
end

if 可以嵌套使用:

Day 5:self,作用域,可见性

2016年9月7日 下午5:37 ***

有些东西在任何时间任何地方表示的意思是不变的,比如整数,你看到的就是它表示的东西。关键词也一样,你不能使用 def,class 这些关键词作为变量名,所以当你看到它们的时候,你可以很容易知道它们是做什么的。不过还有很多东西的意思取决于它们所处的情境,也就是它们在不同的时间不同的地方的意思可能是会有变化的。

self 表示的是当前或者默认的对象,在程序运行的时候每次它都会表示一个特定的对象。永远都只会有一个 self ,但是它表示的东西是会变的。

作用域(scope)的规则决定了变量的可见性。你要知道所在的地方受哪个作用域的影响,这样你才能明白哪些变量表示的是什么,不致于把它们跟在其它的作用域的同名变量混淆。

知道当前是在哪个作用域,了解 self 表示的对象是谁,这样你才能明白到底发生了什么,才可以快速的分析遇到的问题。

下午 5:54 ***

self

下午6:07 ***

使用关键词 self 可以得到当前对象。在程序运行中,有且只有一个 self 。成为 self 有一些特权,一会儿我们会看到。永远都只会有一个当前对象或者叫 self 。是谁在哪里会成为 self 是有一些规则的。

Day 4:Ruby 模块

2016年9月7日 上午10:18 ***

介绍一种跟类相似的构造:模块(module)。在设计程序的时候,我们会把大的组件分割成小块,你可以混合与匹配对象的行为。

跟类差不多,模块也捆绑方法与常量。不一样的是,模块没有实例。你可以把拥有特定功能的模块放到类或某个特定的对象里使用。

Class 这个类是 Module 类的一个子类,也就是所有的 class 对象应该也是一个 module 对象。

上午10:26 ***

创建与使用模块

上午10:26 ***

module MyFirstModule
  def say_hello
  puts 'hello'
  end
end

我们创建了类以后可以去创建这个类的实例,实例可以执行类里面的实例方法。不过模块是没有实例的,模块可以混合(mixed in,mix-in,mixin)到类里面,用的方法是 include 还有 prepend 。这样类的实例就可以使用在模块里面定义的实例方法了。

使用一下上面定义的那个模块:

Day 3:Ruby 组织对象用的类

类与实例

2016年9月5日 下午7:35 ***

一个类里面会定义一些方法,类存在的理由就是要被实例化,也就是去创建一个类的实例得到一个对象。一个实例化的动作,像这样:

obj = Object.new

Object 是 Ruby 内置的一个类,在类上使用点形式,就是 Object 与 new 之间的那个点。你就是发送了一个信息给类。类会对这个信息做出响应,就像对象可以响应信息一样。类也是对象。new 方法是一个构造器,也就是类里面的可以加工与返回新实例的方法。

使用 class 关键词可以去定义类,类的名字用的是常量,使用大写字母开头。常量可以存储信息,常量的值是可以改变的,但是你不能为常量去分配一个新的值,这样 Ruby 会警告你。最好的方法是避免为已经有值的常量分配新的值。

来创建一个 Ticket 类,它里面有一个简单的方法:

class Ticket
  def event
    'can not really be specified yet...'
  end
end

现在可以创建一个新的 ticket 对象,然后问一下它的 event:

Day 2:Ruby 对象

大部分 Ruby 程序,它们的设计,逻辑,动作,都是围绕着对象进行的。写一个 Ruby 程序,主要的工作就是去创建对象,然后给它们能力,让它们可以去执行动作。

Ruby 是 OOP 语言,就是面向对象的语言,你执行的计算,数据处理,输入与输出这些动作,都是通过创建对象,然后让这个对象去执行指定的动作来完成的。对象(object)在现实世界里,就是一个东西。一个苹果是一个对象,一张桌子也是一个对象。

每个对象是一个特定的类的实例(instance),对象的行为大部分是在它们所属的那个类上面定义的方法(method)决定的。
当你想干点什么的时候,比如计算,输出,数据比较,你就是让一个对象去做。比如你想问 a 是否等于 b ,你要问的是 a 是不是认为它自己等于 b 。如果你想知道一个学生是不是上了某个老师的课,你可以问这个学生,“你是不是这个老师的学生”。

写 Ruby 程序,大部分工作就是创建对象,让每个对象都扮演个角色,每个对象可以执行跟这个角色相关的动作。

Day 1:Ruby on Rails 的学习资料与 Ruby 语言的基础知识

跟踪了时间才知道,每天的有效工作与学习时间平均只有 5 小时,我需要提高点效率,乱七八糟的事情少干。第一天花了 5 小时 58  分来准备学习资料与学习 Ruby 语言的基础知识。

音乐:http://music.163.com/#/song?id=36024457

学习资料

开始学习之前一般我会去找一些学习资料,我自己也订阅了一些国外的在线教育网站,比如 Lynda.com,Tutsplus 等等。找到适合自己频率的资料挺花时间的,特别是视频,有时候听有些人讲的东西老有骂娘的冲动,特别是当视频里关于铺垫的东西太多的时候,比如 “hey guys,I'm xxx,yesterday we were xxx , today we gonna xxx ... ”。

Lynda.com 的质量基本可以保证。Tutsplus 的课程差别很大,因为不是统一制作,也没有严格的标准,Youtube 上也会找到一些不错的视频,比如你遇到一个特别的问题,而不是想系统的学一样东西的时候,可以到 Youtube 上搜索一下。

学一门编程语言,一起学 Ruby

我从未有过编程的经历,8年前买过一本《 PHP 与 MySQL Web 开发权威指南 》,不过我从末完成过它。现在想想,原因大概是这样的。最开始,只是兴趣,但兴趣也有腻味的时候,没有伙伴的鼓励,就很难继续下去了。后来,开始自由职业的时候,客户的一般要求(中小企业),用现成的系统与模块就可以很容易解决,用不着动语言,所以没了工作上的必需,也就没再学下去。

为什么现在又要学

学点东西总是好的,对吗。我觉得会有很多人也想学门编程语言,不过或许是没能找到合适的方法,或者被自己吓的不敢动它们。所以, 我想试一下,把自己的学习过程记录下来,用的时间,遇到的问题,解决问题用的方法,这些资料对于初学者来说,是非常有帮助的。很多已经熟练编程的人,让他们去教编程,很可能已经忘了当初自己是怎么学的,遇到的问题是什么等等。跟我们学开车一样,教练总骂我们笨,这是有道理的,因为他已经开了三十年的车。

这可能会用几个月,一年,或者几年的时候,或许我再次放弃,不管怎么样,我都会总结一些经验,我会遇到很多问题,犯很多的错误 ,但最终,我可以帮大家减少在这方面浪费掉的时间。

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点