服务器之家

服务器之家 > 正文

ruby 杂项

时间:2020-04-10 14:58     来源/作者:ruby教程网

本章处理一些实际问题.

语句定界符

有些语言需要一定类型的标点,一般会是分号(;)来结束程序的每一语句.Ruby却采用了shell里的sh和csh的方便做法.一行中的多个语句由分号分开,但在行尾分号却并不需要;一个换行被看作一个分号.如果行以反斜杠(\)结束,随后的换行将忽略;这就允许你的单个逻辑行可以跨越数行.

注释

为什么写注释?虽然良好的代码可自成文档,但那种自以为别人能看懂并按你的方式很快去理解的想法是错误的.除此之外,你自己在离开数天后也会是另一个人;一段时间后我们忘了我们还未修补或增强程序中的哪些部分,你会说,我知道我写了这个的,但我究竟写的是些什么?

一些有经验的程序员会相当正确地指出,矛盾的和过期的注释比没有强.当然,有了注释并不意味着代码的可读性;如果你的代码不清晰,它也许是多虫的.当你学习Ruby的时候,你会发现自己需要更多的注释;然后当你可以通过更简单,优雅,可读的代码来表达思想时,它们就会减少.

Ruby遵从一些普遍的书写习惯,用井号(#)表示注释的开始.跟在#号后面直到#号这行结束为止的代码都将被解释器忽略.

同时,为了方便写大块的注释,Ruby解释器省略以"=begin"和"=end"开始的行中间的一切.

#!/usr/bin/envruby

=begin

**********************************************************************

Thisisacommentblock,somethingyouwriteforthebenefitof

humanreaders(includingyourself).Theinterpreterignoresit.

Thereisnoneedfora'#'atthestartofeveryline.

**********************************************************************

=end

组织你的代码

Ruby读到什么就处理什么.没有编译处理;如果有什么还没读到,就被简单地认为未定义.

#thisresultsinan"undefinedmethod"error:

printsuccessor(3),"\n"

defsuccessor(x)

x+1

end

这并不是像一开始认为的那样,强迫你以从上至下的方式组织你的代码.只要你确保其在调用前将被定义,当解释器遇到一个方法定义时,它能安全地接受暂未定义的引用.

#Conversionoffahrenheittocelsius,broken

#downintotwosteps.

deff_to_c(f)

scale(f-32.0)#Thisisaforwardreference,butit'sokay.

end

defscale(x)

x*5.0/9.0

end

printf"%.1fisacomfortabletemperature.\n",f_to_c(72.3)

所以,一方面看起来比使用Perl或Java要稍稍不方便一些,但却没有写C那么严格(要求你永远维持所指的部分排序).将最高层的代码放在源文件的最后总是可行的.即使这样也比看见时要好的多.一个明智而无痛苦的好办法是将main定义在文件顶端,再在底端调用它.

#!/usr/bin/envruby

defmain

#Expressthetoplevellogichere...

end

#...putsupportcodehere,organizedasyouseefit...

main#...andstartexecutionhere.

Ruby也提供了将复杂程序分割为可读,可重用,逻辑相关的大块的工具.我们已看到用include来访问模块.你将发现load和require也很有用.load的作用类似于文件的复制加粘贴(和C的#include处理器指令相似).require更复杂,仅在需要时才加载,而且最多加载一次.load和require还有其它一些区别;在语言手册,FAQ中可找到更多信息.

就是这些了...

这个教程应该足够帮助你开始编写Ruby程序了.随着问题的深入,你可以深入参考手册.FAQ和库参考也是很重要的资源.

祝好运,编程快乐!

标签:

相关文章

热门资讯

沙雕群名称大全2019精选 今年最火的微信群名沙雕有创意
沙雕群名称大全2019精选 今年最火的微信群名沙雕有创意 2019-07-07
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分
玄元剑仙肉身有什么用 玄元剑仙肉身境界等级划分 2019-06-21
男生常说24816是什么意思?女生说13579是什么意思?
男生常说24816是什么意思?女生说13579是什么意思? 2019-09-17
超A是什么意思 你好a表达的是什么
超A是什么意思 你好a表达的是什么 2019-06-06
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情
华为nova5pro和p30pro哪个好 华为nova5pro和华为p30pro对比详情 2019-06-22
返回顶部