前情提要:在第四天里,我们用参赛者的例子解说实体方法与类别方法.类别中的实体物件,想要玩弄方法时,可以有三种取用方式:(跟斯斯有三种一样) 该类别所定义的实体方法. 模块中可取得的实体方法.(关于模块,记得第三天的include与extend比较吗?) 类别方法:类别物件的singleton method Class can use methods from three areas: Instances of class can call methods that are defined as…
前情提要: 在第五天的最后,我们提到了一句话“相同的class的实体也无法使用别人的singleton method”. 在今天,我们把焦点放在Ruby的method,继续了解存取限制:) Ruby经典面试题目#06说明Ruby的三种存取限制.3 levels of access control for Ruby methods. 让我们用Ruby代码分别描述三种存取:Public,Protected,Private: class TingsIronmanProcessdef publishp“…
前情提要在第三天时,我们解说了如何在class里用include与extend,去使用module的method. Include is for adding methods to an instance of a class.Extend is for adding class methods.(出处)…Also,it is sometimes ok to use“include”to add both instance and class methods.#这句话比较进阶,之后再研究:)并透…
在Ruby on Rails中真的有一堆Select helper可以用,我们经常容易混淆.常见的有三个..select, select_tag, collection_select(其余的什么select_date那些不谈)我们先来看看一个基本的下拉式选项骨架 </p> <select name="ROR"> <option value=">ROR1</option><br/> <option value=&…
yield 所有的"方法(methods)"隐式跟上一个"块(block)"参数. 块参数也可以明确给定,形式就是在参数前面加一个"&",比如 def fn(arg1, arg2, &block) end,其中的 &block 就是明确给定的块参数. 块参数的动作,可以通过调用 call() 方法执行,还可以用 yield 来执行 —— yield 其实就是一个语法糖. 所以以下几种写法常常是等价的: #method re…
define simple method定义简单方法 关键字def用于方法定义,在其后是方法名和可选的参数名列表,参数名列表会用一对圆括号括住.构成方法主体的代码放在参数列表之后,end用于结束方法定义. #define a method def factorial(n) if n<1 raise "argument must be >0" elsif n==1 1 else n*factorial(n-1) end end puts factorial(5) 方法返回值…
ruby对象是严格封装的:只能通过定义的方法访问其内部状态.方法使用的成员变量在对象外部不能直接访问,不过可以通过getter.setter等访问器方法(accessor),使他们看起来好像是直接访问的. 与对象状态的封装性相反,ruby中的类非常开放.每个ruby程序都可以为现有类添加方法,而且也可以为单个对象添加“单键方法(singleton method)”. 创建类 Classes are created in Ruby with the class keyword:class Poin…
Ruby内置的方法Object#clone和Object#dup可以用来copy一个对象,两者区别是dup只复制对象的内容,而clone还复制与对象相关联的内容,如singleton method [ruby] view plaincopyprint? s = "cat" def s.upcase "CaT" end s_dup = s.dup s_clone = s.clone s_dup.upcase #=> "CAT" (single…
HeadFIrst Ruby 第二章总结 methods and classes 前言 这一章讲了如何创建自己的 class,并且讲了在用 class 创建 object 的两个要素: instance variables 和 instance methods.和它们需要注意的一些问题. 创建 method 相关 问题1:括号 be or not be? 在 Ruby 中,如果需要创建的 method 包含参数,那么后面应该有“()” ;如果不需要任何参数,则不需要加“()”,在调用函数的时候也…
Ruby 有4种数据类型:String, Boolen, Array, Hashes Ruby 有3种操作方法:Method, attribute, ?? Ruby 有xxx: Classes, Object.... ====先来看数据类型==== 1. String and Declaring the variables: name = "Wonder Woman" #declare a var and store a string puts name <span style=…