普通的实例变量 普通的实例变量,我们没法在 class 外面直接访问 #普通的实例变量,只能在 class 内部访问 class C1 def initialize(name) @name = name end end t1 = C1.new( {'a' => 1, 'b' => 2}) puts t1.name #报错: undefined method `name' for #<Context::C1:0x0000000142cd30 @name={:a=>1, :b=>…
(Ruby/Python/Perl) Ruby 语言与Python和Perl的一个很大区别,在于Ruby中,所有的实例变量都是在类中完全私有的,只能通过accessor 方法来进行变量访问,引用一段代码来说明具体的使用方法: class Rectangle attr_accessor :width attr_accessor :height attr_accessor :width2 attr_accessor :height2 def initialize(wdth, hgt) @width…
attr_reader方法------读取实例变量 attr_writer方法------改写实例变量 attr_accessor方法-----读写实例变量 class Person attr_reader :name ---------1 attr_writer :name ---------2 def initialize(name) @name = name end end 1 相当于: def name @name end 2 相当于:def name=(value) @name = v…
yield 所有的"方法(methods)"隐式跟上一个"块(block)"参数. 块参数也可以明确给定,形式就是在参数前面加一个"&",比如 def fn(arg1, arg2, &block) end,其中的 &block 就是明确给定的块参数. 块参数的动作,可以通过调用 call() 方法执行,还可以用 yield 来执行 —— yield 其实就是一个语法糖. 所以以下几种写法常常是等价的: #method re…
Ruby继承的语法 class DerivedClass < BaseClass #some stuff end < 为继承符号 重写(override) 的概念 有时, 我们希望子类从父类继承来的方法可以做与父类不相同的事情,这就需要在子类中重写方法.例如, 你有一个类名字叫Email继承于类Message,两个类都有send方法,但是Email类的send方法需要有邮件地址和一系列邮件协议,但是Message中的send方法并不知道这些,与其在Email类中添加send_mail方法,而从…
第二章 类继承,属性,类变量 1.如何声明一个子类 class Treasure < Thing 这样Thing类中的属性name,description都被Treasure继承 2.以下三种方式传入父类initialize方法的参数分别是什么? # This passes a, b, c to the superclass def initialize( a, b, c, d, e, f ) super( a, b, c ) end # This passes a, b, c to the s…
类 Ruby一切都是对象,它包含了一个恒定.例如,可以使用.class物业查看对象的类型,你可以看一下1.class.你会发现常1类型是Fixnum,1但它是Fixnum的一个例子. Ruby本类class开始 随着end结束.类名首字母的约定是大写.Ruby中的方法以def開始 以end结束,方法名首字母的约定是小写.Ruby中的局部变量名首字母的约定是小写. Ruby中的构造函数名称为initialize.Ruby中的成员变量(实例变量)前导@符,在initialize里进行声明与初始化.R…
1.1 简介 Ruby语言是由松本行弘(Matz)设计,是一门通用的.面向对象的.解释型语言. 1.2 Ruby?RUBY?ruby? 1.Ruby:用来表示编程的语言 2.ruby:是指一个计算机程序,特指Ruby的解释器 3.RUBY:准确来说没有这种写法,一般是简写,例如WTO. 1.3. 安装方式 方式1 brew brew install ruby 方式2 rvm rvm install 2.2.4 更多rvm可以参考:rvm入门篇-安装和使用 1.4 工具 1.irb:交互式Ruby…
在codecademy上开始玩ruby了 1.数据类型:boolean,string,number 变量直接用即可,不用声明(“拿来主义”) 运算符:+ - * / ** % == != && ||!> >= < <= 等 输入语句:gets/gets.chomp(后者不包括"/n") 输出语句:puts/print(后者不包括"/n") 用#{变量}输出对应变量的值   2.每个量都是object 都有method stri…
写这篇文章的初衷源于我的伙伴们在上手Ruby过程中,表现实在是太让人拙计了.由于项目的急功近利,需要迅速入门Ruby并上手项目.所以很多开发者在实际开发过程中,不熟悉Ruby的表达方式,也会沿用其他语言比较生涩的表达形式.在我看来,Ruby的学习应该是个系统的循序渐进的过程,尽量避免急迫的方式.不过现实往往是紧迫的,所以就有了这篇文章. 标题中的菜鸟主要是指那些有其他编程语言开发经验,但在Ruby面前是个学习时间不久的初学者.我的工作伙伴都是这样的一些人.所以,我就在考虑Ruby和其他语言的一些…