<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    閑云無(wú)衣
    無(wú)衣的筆記
    語(yǔ)句定界符

    有些語(yǔ)言需要一定類型的標(biāo)點(diǎn),一般會(huì)是分號(hào)(;)來(lái)結(jié)束程序的每一語(yǔ)句.Ruby卻采用了shell里的sh和csh的方便做法.一行中的多個(gè)語(yǔ)句由分號(hào)分開(kāi),但在行尾分號(hào)卻并不需要;一個(gè)換行被看作一個(gè)分號(hào).如果行以反斜杠(\)結(jié)束,隨后的換行將忽略;這就允許你的單個(gè)邏輯行可以跨越數(shù)行.

    注釋

    為什么寫(xiě)注釋?雖然良好的代碼可自成文檔,但那種自以為別人能看懂并按你的方式很快去理解的想法是錯(cuò)誤的.除此之外,你自己在離開(kāi)數(shù)天后也會(huì)是另一個(gè)人;一段時(shí)間后我們忘了我們還未修補(bǔ)或增強(qiáng)程序中的哪些部分,你會(huì)說(shuō),我知道我寫(xiě)了這個(gè)的,但我究竟寫(xiě)的是些什么?

    一些有經(jīng)驗(yàn)的程序員會(huì)相當(dāng)正確地指出,矛盾的和過(guò)期的注釋比沒(méi)有強(qiáng).當(dāng)然,有了注釋并不意味著代碼的可讀性;如果你的代碼不清晰,它也許是多蟲(chóng)的.當(dāng)你學(xué)習(xí)Ruby的時(shí)候,你會(huì)發(fā)現(xiàn)自己需要更多的注釋;然后當(dāng)你可以通過(guò)更簡(jiǎn)單,優(yōu)雅,可讀的代碼來(lái)表達(dá)思想時(shí),它們就會(huì)減少.

    Ruby遵從一些普遍的書(shū)寫(xiě)習(xí)慣,用井號(hào)(#)表示注釋的開(kāi)始.跟在#號(hào)后面直到#號(hào)這行結(jié)束為止的代碼都將被解釋器忽略.

    同時(shí),為了方便寫(xiě)大塊的注釋,?Ruby解釋器省略以"=begin"和"=end"開(kāi)始的行中間的一切.

    #!/usr/bin/env?ruby
    =begin
    **********************************************************************
    ??This?is?a?comment?block,?something?you?write?for?the?benefit?of
    ??human?readers?(including?yourself).??The?interpreter?ignores?it.
    ??There?is?no?need?for?a?'#'?at?the?start?of?every?line.
    **********************************************************************
    =end?


    組織你的代碼

    Ruby讀到什么就處理什么.沒(méi)有編譯處理;如果有什么還沒(méi)讀到,就被簡(jiǎn)單地認(rèn)為未定義.

    #?this?results?in?an?"undefined?method"?error:
    print?successor(3),"\n"
    def?successor(x)
    ??x?+?1
    end?


    這并不是像一開(kāi)始認(rèn)為的那樣,強(qiáng)迫你以從上至下的方式組織你的代碼.只要你確保其在調(diào)用前將被定義,當(dāng)解釋器遇到一個(gè)方法定義時(shí),它能安全地接受暫未定義的引用.

    #?Conversion?of?fahrenheit?to?celsius,?broken
    #?down?into?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
    printf?"%.1f?is?a?comfortable?temperature.\n",?f_to_c(72.3)?


    所以,一方面看起來(lái)比使用Perl或Java要稍稍不方便一些,但卻沒(méi)有寫(xiě)C那么嚴(yán)格(要求你永遠(yuǎn)維持所指的部分排序).將最高層的代碼放在源文件的最后總是可行的.即使這樣也比看見(jiàn)時(shí)要好的多.一個(gè)明智而無(wú)痛苦的好辦法是將main定義在文件頂端,再在底端調(diào)用它.

    #!/usr/bin/env?ruby
    def?main
    ??#?Express?the?top?level?logic?here...
    end
    #?...?put?support?code?here,?organized?as?you?see?fit?...
    main?#?...?and?start?execution?here.?


    Ruby也提供了將復(fù)雜程序分割為可讀,可重用,邏輯相關(guān)的大塊的工具.我們已看到用?include?來(lái)訪問(wèn)模塊.你將發(fā)現(xiàn)?load?和?require?也很有用.load的作用類似于文件的復(fù)制加粘貼(和C的#include處理器指令相似).require更復(fù)雜,僅在需要時(shí)才加載,而且最多加載一次.load和require還有其它一些區(qū)別;在語(yǔ)言手冊(cè),FAQ中可找到更多信息.
    posted on 2007-02-08 17:06 無(wú)衣 閱讀(802) 評(píng)論(0)  編輯  收藏 所屬分類: rails
     
    主站蜘蛛池模板: 97精品免费视频| 国产大片免费网站不卡美女| 免费永久看黄在线观看app| 456亚洲人成在线播放网站| 麻豆最新国产剧情AV原创免费| 亚洲人成电影福利在线播放| 亚洲国产精品免费在线观看| 亚洲国产精品成人久久久| 69式互添免费视频| 亚洲精品无码久久| 全黄性性激高免费视频| 二区久久国产乱子伦免费精品| 亚洲精品少妇30p| 99爱在线精品免费观看| 亚洲精品无码av片| 亚洲精品高清一二区久久| 免费人成激情视频在线观看冫| 亚洲Av综合色区无码专区桃色| 182tv免费观看在线视频| 亚洲欧洲日产国码久在线| 国产精品四虎在线观看免费| 久久嫩草影院免费看夜色| 自怕偷自怕亚洲精品| 最近最新中文字幕完整版免费高清 | 成人免费网站在线观看| 免费国产污网站在线观看不要卡| 曰韩亚洲av人人夜夜澡人人爽| 无码av免费一区二区三区试看| 67194在线午夜亚洲| 亚洲欧洲国产成人综合在线观看| 中文字幕无码一区二区免费| 亚洲一区电影在线观看| 亚洲成人高清在线| 99精品免费观看| 色天使色婷婷在线影院亚洲| 亚洲国产精品一区二区久久hs| 国产精品免费观看久久| 青青操免费在线视频| 亚洲人成欧美中文字幕| 亚洲av无码专区在线播放| 日韩高清免费在线观看|