脚 本 之 家 www.jb51.net
页面导航:  不限条件-->ruby
本地搜索:
 当一个方法结束工作时我们也许需要进行清理工作.也许一个打开的文件需要关闭,缓冲区的数据应清空等等.如果对于每一个方法这里永远只有一个退出点,我们可以心安理得地将我们的清理代码放在一个地方并知道它会被执行;但一个方法可能从多个地方返回,或者因为异常我们的清理代码被意外跳过.begin  file = open("/tmp/some_file", "w")  # ... write to the file ...  file.closee...
http://www.jb51.net//article/12884.htm
 一个运行着的程序常会遇到意外的问题.一个要读取的文件不存在;当希望存入一些数据时磁盘满了;用户可能输入不恰当的数据.ruby> file = open("some_file")ERR: (eval):1:in `open': No such file or directory - some_file  一个健壮的程序会合理并漂亮的处理这些问题.面对那些异常是一件讨人厌的工作.C程序员被要求做到检查每一个可能导致错误发生的系统调用的返回值并...
http://www.jb51.net//article/12883.htm
 一个常量由大写字母开头.它应最多被赋值一次.在Ruby的当前版本中,常量的再赋值只会产生警告而不是错误(non-ANSI版的eval.rb不会报告这一警告)ruby>fluid=30   30ruby>fluid=31   31ruby>Solid=32   32ruby>Solid=33   (eval):1: warning: already initialized constant S...
http://www.jb51.net//article/12882.htm
 局部变量由小写字母或下划线(_)开头.局部变量不像全局和实变量一样在初始化前含nil值.ruby> $foo   nilruby> @foo   nilruby> fooERR: (eval):1: undefined local variable or method `foo' for main(Object)  对局部变量的第一次赋值做的很像一次声明.如果你指向一...
http://www.jb51.net//article/12881.htm
 一个实变量由@开头,它的范围限制在 self 对象内.两个不同的对象,即使属于同一个类,也可以拥有不同值的实变量.从对象外部来看,实变量不能改变甚至观察(比如, Ruby的实变量从来不是公用的),除非方法由程序员明确声明.像全局变量一样,实变量在初始前的值是nil.Ruby的实变量用不着声明.这暗含着对象的弹性结构.实际上,每个实变量都是在第一次出现时动态加入对象的.ruby> class InstTest    |   def set_foo(n...
http://www.jb51.net//article/12880.htm
 全局变量由$开头.它们可以在程序的任何位置访问到.在初始化前,全局变量有一个特殊的值 nil.ruby> $foo   nilruby> $foo = 5   5ruby> $foo   5  应谨慎使用全局变量.由于在任何地方都可以被写因此他们相当危险.滥用全局变量会导致很难隔离臭虫;同时也视为程序的设计未经严格考虑.当你发现必须要使用全局变量时,记得给它一个不会在其它地方一不小心就用到的描述性...
http://www.jb51.net//article/12879.htm
 Ruby有三类变量,一种常量和两种严格意义上的伪变量(pseudo-variables).变量和常量都没有类型.虽然无类型变量存在一定的缺点,但却有更多的优点并很好的符合Ruby快速简便(quick and easy)的哲学精神.在大多数语言里,变量都必须指定其类型,可更改性(是不是个常数)和范围;由于类型的不存在,剩下的东西也可由变量名字很快确定(你马上会看见),在Ruby里我们不需要变量声明.由首字母标识符将其分类:$          全局变量 &...
http://www.jb51.net//article/12878.htm
我们总是希望对未知事件分类.当它发生时,向其它方法传递一块作为参数的代码是最容易地解决方法,也就是说我们希望像处理数据一样处理代码.一个新的过程对象可以通过proc创建:ruby> quux = proc {    |   print "QUUXQUUXQUUX!!!\n"    | }   #<Proc:0x4017357c>  现在quux指向一个对象,像...
http://www.jb51.net//article/12877.htm
 Ruby的模块非常类似类,除了:模块不可以有实体 模块不可以有子类 模块由module...end定义.实际上...模块的'模块类'是'类的类'这个类的父类.搞懂了吗?不懂?让我们继续看下去吧.模块有两种用法.其一是将相近的方法和实体放在一个相对集中的域里.Ruby标准包里的Math模块就扮演着这一角色:ruby> Math.sqrt(2)   1.41421ruby> Math::PI   3.14159  ::操作符告诉 Ruby&nbs...
http://www.jb51.net//article/12876.htm
 实体的行为取决于其类,但很多时候我们知道一个特定的实体需要特定的行为.在很多语言里,我们必须陷入另外再定义一个类的麻烦里,即使它只是用来接着实体化一次.在Ruby里,我们可以赋予任何对象属于其自身的方法.ruby> class SingletonTest    |   def size    |     print "25\n"    |&...
http://www.jb51.net//article/12875.htm
面向对象是一个挺让人迷惑的措辞.叫一切东西都是面向对象会让别人觉得你很时髦. Ruby 声称自己是面向对象的脚本语言;但究竟什么才是"面向对象"? 我们已经有了各种各样的答案,但所有这些恐怕都归结于同一件事.与其快速地概括它,不如让我们先花点儿时间考虑一下传统的编程模式.传统意义上,一个编程问题从出现的各种数据,以及处理数据的过程(procedures)着手.在这一模式下,数据是呆板,被动和无用的;它完全的求助于那个体积庞大的,主动的,逻辑性的,全能的过程体.这一做法的问题在于程序是由程序员写的,而他们仅仅能在工作中记下为数不多的细节.而随着工程的加大,它的核心也...
http://www.jb51.net//article/12869.htm
共有:36/10,当前2/4页  [首页] [上一页] 1 2 3 4 [下一页]  [尾页] 转到: