紅寶石名稱(chēng)錯(cuò)誤的原因:未初始化的常數(shù)錯(cuò)誤

開(kāi)源編程語(yǔ)言Ruby以其清晰的語(yǔ)法和易用性而聞名。這并不意味著你會(huì)'t偶爾會(huì)遇到錯(cuò)誤消息。最棘手的問(wèn)題之一是名稱(chēng)錯(cuò)誤未初始化的常量異常,因?yàn)樗卸喾N原因。例外的語(yǔ)法遵循以下格式:

 NameError:未初始化的c

 NameError:未初始化的常數(shù)

(其中各種班級(jí)名稱(chēng)代替了東西)

Ruby NameError Uninitialized Constant Causes

未初始化的常量錯(cuò)誤是常規(guī)名稱(chēng)錯(cuò)誤異常類(lèi)的變體。它有幾個(gè)可能的原因。

  • You'當(dāng)代碼引用一個(gè)可以't查找的類(lèi)或模塊時(shí),通常因?yàn)榇a不't包含require,它指示Ruby文件加載類(lèi)。
  • 在Ruby中,變量/方法以小寫(xiě)字母開(kāi)頭,而類(lèi)以大寫(xiě)字母開(kāi)頭。如果代碼沒(méi)有't反映這種區(qū)別,您'將收到未初始化的常量異常。
  • 名稱(chēng)錯(cuò)誤的另一個(gè)可能原因是您've做了一個(gè)簡(jiǎn)單的拼寫(xiě)錯(cuò)誤。
  • Ruby是區(qū)分大小寫(xiě)的,所以"TestCode"and"TestCode"完全不同。
  • 代碼中提到了rubygems,除舊版本的Ruby外,其他所有版本都不使用。

如何修復(fù)錯(cuò)誤

要排除代碼故障,請(qǐng)一次檢查上面列出的可能原因。如果您發(fā)現(xiàn)問(wèn)題,請(qǐng)解決。例如,瀏覽代碼,尋找變量和類(lèi)的大寫(xiě)和小寫(xiě)用法的差異。如果找到并糾正它,您的問(wèn)題可能會(huì)解決。如果它是't,繼續(xù)通過(guò)其他可能的原因,隨時(shí)修復(fù)。

如果您在代碼中提到的課程是在另一個(gè)模塊中,請(qǐng)使用以下全名引用它:

#!/usr/bin/env rubymodule MyModule類(lèi)MyClass;endendc=MyMo

關(guān)于紅寶石例外

例外情況是Ruby如何將注意力集中在代碼中的問(wèn)題上。當(dāng)遇到代碼中的錯(cuò)誤時(shí),異常是"升高"或"投擲"程序默認(rèn)關(guān)閉。

Ruby發(fā)布具有預(yù)定義類(lèi)的異常層次結(jié)構(gòu)。NameErrors屬于StandardError類(lèi)健康營(yíng)養(yǎng)小知識(shí)大全集,以及RuntimeError,ThreadError,RangeError,argenterror等。本課程包括您在典型Ruby程序中遇到的大多數(shù)正常例外情況。

科普_1