rubyonrails:ruby 杂项

本章处理些实际问题.
语句定界符
有些语言需要定类型标点,般会是分号(;)来结束语句.Ruby却采用了shell里sh和csh方便做法.行中多个语句由分号分开,但在行尾分号却并不需要;个换行被看作个分号.如果行以反斜杠(\)结束,随后换行将忽略;这就允许你单个逻辑行可以跨越数行.
注释
为什么写注释?虽然良好代码可自成文档,但那种自以为别人能看懂并按你方式很快去理解想法是.除此的外,你自己在离开数天后也会是另个人;段时间后我们忘了我们还未修补或增强哪些部分,你会说,我知道我写了这个,但我究竟写是些什么?
些有经验员会相当正确地指出,矛盾和过期注释比没有强.当然,有了注释并不意味着代码可读性;如果你代码不清晰,它也许是多虫.当你学习Ruby时候,你会发现自己需要更多注释;然后当你可以通过更简单,优雅,可读代码来表达思想时,它们就会减少.
Ruby遵从些普遍书写习惯,用井号(#)表示注释开始.跟在#号后面直到#号这行结束为止代码都将被解释器忽略.
同时,为了方便写大块注释, Ruby解释器省略以"=begin"和"=end"开始行中间切.
#!/usr/bin/env ruby
=begin
**********************************************************************
This is a comment block, something you write for the benefit of
human readers (including yourself). The erpreter ignores it.
There is no need for a '#' at the start of every line.
**********************************************************************
=end

组织你代码
Ruby读到什么就处理什么.没有编译处理;如果有什么还没读到,就被简单地认为未定义.
# this results in an "und method" error:
pr successor(3),"\n"
def successor(x)
x + 1
end

这并不是像开始认为那样,强迫你以从上至下方式组织你代码.只要你确保其在前将被定义,当解释器遇到个思路方法定义时,它能安全地接受暂未定义引用.
# Conversion of fahrenheit to celsius, broken
# down o two steps.
def f_to_c(f)
scale(f - 32.0) # This is a forward reference, but it's okay.
end
def scale(x)
x * 5.0 / 9.0
end
prf "%.1f is a comfortable temperature.\n", f_to_c(72.3)

所以,方面看起来比使用Perl或Java要稍稍不方便些,但却没有写C那么严格(要求你永远维持所指部分排序).将最高层代码放在源文件最后总是可行.即使这样也比看见时要好多.个明智而无痛苦好办法是将定义在文件顶端,再在底端它.
#!/usr/bin/env ruby
def
# Express the top level logic here...
end
# ... put support code here, organized as you see fit ...
# ... and start execution here.

Ruby也提供了将复杂分割为可读,可重用,逻辑相关大块工具.我们已看到用 来访问模块.你将发现 load 和 require 也很有用.load作用类似于文件复制加粘贴(和C#处理器指令相似).require更复杂,仅在需要时才加载,而且最多加载次.load和require还有其它些区别;在语言手册,FAQ中可找到更多信息.
就是这些了...
这个教程应该足够帮助你开始编写Ruby了.随着问题深入,你可以深入参考手册.FAQ和库参考也是很重要资源.
祝好运,编程快乐!
Tags:  ruby是什么 ruby教程 ruby是什么意思 rubyonrails

延伸阅读

最新评论

发表评论