
Ruby
king6603
这个作者很懒,什么都没留下…
展开
-
Ruby中以问号(?)和感叹号(!)结尾的方法
在Ruby中有很多方法是以?和!号结尾的“?”被用于标示谓词,即返回Boolean直的方法,如Array.empty?(判断数组中元素是否为空)“!”出现在方法名尾部的感叹号表明使用该方法是需要多加小心。许多Ruby的核心类都定义了成对的方法,它们具有同样的名称,只是结尾相差一个“!”,通常情况下,不带感叹号的方法返调用该方法的一个拷贝,二带感叹号的方法则是一个可变方法,该方法会修改原来的对象,如Array类中的sort和sort!原创 2010-06-03 22:39:00 · 16285 阅读 · 0 评论 -
Ruby 对象污染机制
一个对象可以通过调用taint方法将对象设置成污染的。一旦一个对象被设置成受污染的,那么源自它的任何对象都将被标记为受污染的。不过一个受污染的对象可以通过untaint标记为未受污染的。 s = "King"s.taintputs s.tainted? # trues.untaintputs s.tainted? # false Ruby的污染机制,主要是为了保证对象的安全性,在web应用程序中,一些数据来自变淡的提交,这样的数据缺乏可信度。一旦检查了该对象的内容原创 2010-06-08 23:56:00 · 1384 阅读 · 0 评论 -
Ruby 冻结对象
<br /> Ruby中的对象一旦别冻结,此对象将变得不可改变,即所有的状态都是不可改变的,<br />并且对其方法的调用也会失败。<br />s = "King"s.freeze #冻结对象puts s.frozen?s.upcase! #error,请调用upcase!而不是upcase<br /> 某个对象一旦被冻结,就没有办法解冻了,使用clone方法拷贝一个被冻结的对象<br />,那么得到的拷贝也是一个被冻结的对象。但调用dup方法拷贝一个原创 2010-06-08 23:46:00 · 638 阅读 · 0 评论 -
Ruby中对象的相等性比较
<br />1、equal?<br /> equal?由Object定义,用于比较两个对象引用的相等性。<br /> ##s1 和 s2 是两个不同对象的引用#s1 = "King"s2 = "King"puts s1.equal?(s2) #falseputs "s1 object_id:#{s1.object_id}/n s2 object_id:#{s2.object_id}"<br />2、==<br /> 大多数类重新定义了了此操作符,它用于比较原创 2010-06-08 23:36:00 · 1808 阅读 · 0 评论 -
Ruby 程序的命名规则
Ruby标示符由字母、数字下划线组成,但是不能以数字开头,并且标识符,不能包含任何非打印字符。 以A到Z的大写字母开头的标识符是常量,如过尝试改变这样标识符的值,Ruby解释器将发出警告。 类名和模块名必须以大写字母开头,否则会报错。 按照习惯,非常量的多字节和标识符以下划线分割多个字符,如:“hello_word”而多字节的常量则以“HelloWorld”或"HELLO_WORLD"的形式标示。原创 2010-06-04 15:11:00 · 578 阅读 · 0 评论 -
RubyGems
<br />RubyGem对Ruby 程序进行打包的打包系统。<br />RubyGems使安装Ruby软件变得容易,它可以自动管理包之间的复杂的依赖关系。<br />RubyGems常用命令:<br /> gem list #查看已安装的gem包<br /> gem update rails #更新rails<br /> gem update --system #更新gems 系统<br /> g原创 2010-06-04 14:59:00 · 433 阅读 · 0 评论 -
Ruby 中类的含义
<br />一个类就是一些相关方法的集合,这些方法将操作一个对象的状态<br />一个对象的状态保存在他的实例变量中;那些以@开头的变量是类<br />的实例变量,他的值是特定于某个对象的。原创 2010-06-03 23:38:00 · 487 阅读 · 0 评论 -
Ruby中以等号(=)结尾的方法
Ruby中允许方法以”=“结尾。以等号结尾的方法有些特殊,Ruby允许以赋值操作的语法来调用它们。class Text def text=(x) endendtext = Text.new#一下方法调用功能相同text.text=(6) text.text = 6原创 2010-06-03 23:31:00 · 1200 阅读 · 0 评论 -
Ruby中的并行赋值
<br />在Ruby中允许并行赋值<br />如:<br /> <br /> a,b = 8,9 #a = 8,b = 9<br /> a,b = b,a #交换ab的值<br /> o,p,q = [1,2,3]<br /> <br />并且在Ruby中允许方法有多个返回值(这与C/C++/Java不同),此时并行赋值变的很有用:<br /> <br /> def test(x,y)<br /> a =原创 2010-06-03 22:56:00 · 813 阅读 · 1 评论 -
Ruby是面向表达式的
<br />Ruby的语法是面向表达式的,例如:<br /> max_num = if x > y then x else y<br />虽然在Ruby中所有的”语句“都是表达式,但并不是所有的表达式都有有意义的返回值,<br />如while循环和方法的定义,在正常情况下它们都返回nil!原创 2010-06-03 22:46:00 · 835 阅读 · 0 评论 -
Ruby 中变量的初始化
<br />Ruby中的变量分为四类,分别是:类变量、实例变量、全局变量和局部变量<br /> <br />类变量<br /> 在使用类变量之前必须对其进行初始化赋值。否则引用一个未初始化的类变量会得到一个错误。<br /> class King def self.hello @@hello endendputs King.hello #error<br />实例变量<br /> 如果引用一个未初始化的实例变量Ruby解释器会返回一个nil<br原创 2010-06-09 00:13:00 · 2869 阅读 · 0 评论