- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 - 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
 - 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
 - 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
 - 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
 
                        查看更多
                        
                    
                ruby开发答疑
                    本问答的目标读者是不了解Ruby语言、但有别的编程语言经验的人。Ruby语言的代码可读性是很强的。本问答只把一些语法特点、以及别的语言中可能没有或不同的东西展现出来,目的在于让有别的编程语言经验的人能快速读懂Ruby代码。注意本问答讲的是Ruby语言本身(基于版本1.9),而不是Ruby on Rails,后者是Ruby的一种DSL,语言面貌上和Ruby有一定差异。Q:Ruby最有特点的语法形式是什么?或许是方法后接代码块的大量使用,以下面这行代码为例:  file.each_line(x) { |line| print line } 表示在file对象上调用each_line方法(以x为行的分隔符),该方法的功能是依次得到每一行,传递给后面的代码块,代码块把传来的行赋值给line变量,然后在代码块里对line进行处理,处理完毕则从代码块返回each_line方法,再由它得到下一行,再一次传递给代码块。——像each_line这样的方法,Ruby中称之为迭代器方法(iterator)。又比如这个例子:  open(test.txt) { |f| line_array = f.readlines } 用open方法打开test.txt文件,生成了一个File类的实例对象,并把这个对象传递给后面的代码块,赋值给变量f,然后代码块里对f进行操作,操作完毕后返回open方法,open方法再把f关闭,所以这一行代码相当于如下三行:  f = open(test.txt)   line_array = f.readlines   f.close Ruby风格写法的好处:一行完成,逻辑紧凑;自动关闭文件,防止忘了f.close;当前scope少创建一个变量名f,代码块关闭后,f就消失了一个Ruby风格的完整命令就是由对象、方法(包含参数)、代码块(包含参数)构成的。有的方法可以不接代码块。Q:我看到有些代码和上面提到的写法不太像,是怎么回事?有些DSL看起来和Ruby语言本身不大像,但其实语法格局是一样的,只是通过一些设定伪装成别的风格。大致有四点导致这种情况:1、隐性地调用方法,让方法看起来像函数或关键词;  Ruby中没有函数,全都是方法。方法就得在某个对象上调用,但是这个对象可以隐藏方法不在某个对象上显式调用,那它就一定是在self所指的对象上调用如open(file)实际是self.open(file),不过open是私有方法,不能显式写出对象2、省略了括起参数的括号;如open(test.txt,w)可以写成open test.txt, w 3、代码块的{...}改成do...end;  open test.txt do |line|   end 就相当于open(test.txt) {|line|     } 这是很常见的,{...}和do...end只在优先级上有一些不同,一般都可互换通常的风格是:代码块里的代码若只有一行,则用{},若有多行,则用do...end 这只是风格管理,实际上即使是多行代码,你也可以用{}括起来4、省略作为方法参数的哈希(散列)字面量的花括号。很多方法喜欢拿一个哈希做参数,如果哈希是方法调用的最后一个参数,则花括号可省略  task :name = :test 相当于 task({:name = :test}) 如下一段代码:HTMLForm.generate(STDOUT) do   comment This is a simple HTML form   form :name = registration,        :action = /register.cgi do     content Name:     input :name = name     content Address:     textarea :name = address, :rows=6, :cols=40 do       Please enter your mailing address here     end   end end 如果写“全”来,就相当于这样:HTMLForm.generate(STDOUT) {   ment(This is a simple HTML form)   self.form({:name = registration,              :action = /register.cgi}) {     self.content(Name:)     self.input({:name = name})     self.content(Address:)     self.textarea({:name = address, :rows=6, :cols=40}) {
                您可能关注的文档
最近下载
- EHS体系程序文件-信息沟通、协商和决议管理程序.docx VIP
 - 高中政治课堂教学应用时事政治策略探究.doc VIP
 - (GBT7588 1—2020)电梯制造与安装安全规范.pdf VIP
 - 设施农业智能化与现代农业装备产业发展趋势报告.docx
 - “十四五”公路养护发展规划.docx VIP
 - 健康评估(第二版)全套教学课件.pptx
 - 标准图集-20S515-钢筋混凝土及砖砌排水检查井.pdf VIP
 - 2024年贵州省六盘水市中考语文试卷真题(含答案逐题解析).docx
 - CQI-27铸造系统评估表 第二版(2023).xls VIP
 - 银行大堂服务实训(第2版) 课件 项目4 营业中引导营销服务.pdf VIP
 
原创力文档
                        
                                    

文档评论(0)