手机看片欧美日韩,久久精品国产主播一区二区,欧美亚洲中日韩中文字幕在线

編程從 Python 到 Ruby轉(zhuǎn)型的異同點(diǎn)

Ruby 是……

一門開源的動(dòng)態(tài)編程語言,注重簡(jiǎn)潔和效率。Ruby 的句法優(yōu)雅,讀起來自然,寫起來舒適。

當(dāng)您初次看到 Ruby 語言代碼的時(shí)候,它很可能讓您想起您使用過的其他編程語言。這是當(dāng)然的, 因?yàn)?Ruby 的大部分語法是 Perl、Python 和 Java(以及其他語言)的用戶所熟悉的。 如果您曾經(jīng)使用過這這些語言,學(xué)習(xí) Ruby 就是小菜一碟。

Python 是另一個(gè)很好的通用編程語言。從 Python 到 Ruby,你會(huì)發(fā)現(xiàn) Ruby 需要學(xué)習(xí)更多一點(diǎn)的語法。

相似點(diǎn)

Ruby 與 Python 一樣的地方……

  • 有交互式命令解釋器(叫做?irb)。
  • 可以在命令行閱讀文檔(使用?ri?命令代替 Python 的?pydoc)。
  • 沒有特殊的行終結(jié)符(除了通常的換行符)。
  • 與 Python 的三個(gè)引號(hào)類似,字符串字面量可以跨越多行。
  • 方括號(hào)用于列表,大括號(hào)用于字典(Ruby 中叫做 哈希)。
  • 數(shù)組操作相同(數(shù)組相加,會(huì)得到一個(gè)長(zhǎng)數(shù)組;a3 = [a1, a2] 會(huì)得到一個(gè)二維數(shù)組)。
  • 對(duì)象是強(qiáng)、動(dòng)態(tài)類型。
  • 一切皆是對(duì)象,變量只是對(duì)象的引用。
  • 盡管關(guān)鍵字有些許不同,但異常處理方式是一致的。
  • 擁有嵌入式文檔工具(Ruby 的工具叫 rdoc)。
  • 同樣好地支持函數(shù)式編程,比如:一級(jí)類型函數(shù),匿名方法和閉包。

相異點(diǎn)

Ruby 與 Python 不同的地方……

  • 字符串是可變類型。
  • 可以新建常量(無意改變的變量)。
  • 有一些強(qiáng)制習(xí)慣用法(例如:類名以大寫字母開頭,變量以小寫字母開頭)。
  • 只有一種列表容器,且是可變類型。
  • 雙引號(hào)字符串可以轉(zhuǎn)義(像?\t),有特殊的“替代表達(dá)式”語法(不用像?"字符串" + "相" + "加"這樣,允許插入 Ruby 表達(dá)式結(jié)果到其他字符串)。單引號(hào)字符串與 Python 的?r"原始字符串"?一樣。
  • 沒有什么“新式”或者“舊式”類定義寫法。只有一種寫法( Python 3 以上的版本沒有這個(gè)問題,但不能向下兼容 Python 2)。
  • 不能直接訪問屬性。但在 Ruby 中,一切皆方法調(diào)用。
  • 方法調(diào)用的括號(hào)是可選的。
  • 有 public、private、protected 三種強(qiáng)制的訪問控制類型,不像 Python 里面是用變量名加下劃線表示。
  • “混入(mixins)”替代多重繼承。
  • 你可以增加或修改內(nèi)置類的方法。倆語言都允許你隨時(shí)打開、修改類,但 Python 無法修改內(nèi)置類,Ruby 無此限制。
  • true?和?false?代替?True?和?Falsenil?代替?None)。
  • 判斷真值時(shí),只有?false?和?nil?當(dāng)做假值。其余一切皆為真(包括?0、?0.0、?""?和?[])。
  • elsif?代替了?elif
  • require?替代?import。其他情況,使用相同。
  • 通常,代碼之(而不是之下的字符文檔)的注釋用來生成文檔。
  • 雖然有很多語法糖需要記憶、學(xué)習(xí),這也使得 Ruby 非常有趣且有效率。
  • 變量設(shè)置后無法取消(類似 Python 的?del?聲明)。你可以將其重置為?nil?讓 GC 回收舊的內(nèi)容,但它仍然存在于符號(hào)表中。
  • yield?關(guān)鍵字作用是不一樣的。在 Python 中,它會(huì)記住上一次返回時(shí)在函數(shù)體中調(diào)用的位置。外部代碼有責(zé)任繼續(xù)執(zhí)行函數(shù)。而在 Ruby 中,yield會(huì)執(zhí)行作為方法最后一個(gè)參數(shù)傳入的方法,然后立即執(zhí)行。
  • Python 支持一種匿名函數(shù),lambdas。而 Ruby 支持?blocksProcs?和?lambdas

蜀ICP備15035023號(hào)-4

<rp id="pptpi"><xmp id="pptpi"><th id="pptpi"></th><dl id="pptpi"><pre id="pptpi"><noframes id="pptpi"><code id="pptpi"></code><kbd id="pptpi"><strong id="pptpi"><pre id="pptpi"></pre></strong></kbd>
  • <var id="pptpi"><dl id="pptpi"></dl></var>
    <menu id="pptpi"></menu>

    
    <rt id="pptpi"></rt>
  • <rp id="pptpi"><strong id="pptpi"><meter id="pptpi"></meter></strong></rp>
  • <p id="pptpi"></p>
    主站蜘蛛池模板: 安图县| 孟连| 涟源市| 巩留县| 永修县| 乌兰县| 鄂尔多斯市| 渝中区| 桦甸市| 平陆县| 当雄县| 四平市| 灌云县| 曲松县| 象山县| 多伦县| 虹口区| 阿城市| 横山县| 大英县| 罗源县| 新乐市| 唐海县| 潢川县| 共和县| 临泉县| 南岸区| 姜堰市| 蓝山县| 云南省| 深水埗区| 汨罗市| 乳山市| 西乌珠穆沁旗| 榆中县| 芷江| 保德县| 日土县| 孝感市| 漳浦县| 鸡东县|