Rails 2.3 的Magic注釋frozen_string_literal

Matz 決定在在Ruby3.0中默認(rèn)凍結(jié)字符串,來提高程序的性能

為了有個(gè)過渡的過程,在Ruby2.3?增加了一個(gè)魔法注釋

# frozen_string_literal: true

那這個(gè)有什么用呢?

我們應(yīng)該知道?字符串有一個(gè)這樣的方法就是

freeze, 它是我們主動用來凍結(jié)字符串

假設(shè)代碼我們使用

#app.rb

#凍結(jié)該字符串

CON = "string".freeze

#判斷該字符串時(shí)候被凍結(jié)

p CON.frozen?

#嘗試修改

CON << "12"

puts CON

得出結(jié)果是:

》》 true??

》》app.rb:10:in `': can't modify frozen String (RuntimeError)

得出的結(jié)果是我們無法修改被凍結(jié)的字符串

如果我們沒有使用?freezen去凍結(jié)該字符串,就能去修改字符串,但是會提示而已

在Ruby2.3新加的這行注釋?放在?文件的頭部,它就會默認(rèn)將字符串凍結(jié)

# frozen_string_literal: true

CON = "string"

#判斷該字符串時(shí)候被凍結(jié)

p CON.frozen?

#嘗試修改

CON << "12"

puts CON

得出和前面一樣的結(jié)果是:

》》 true

》》 app.rb:7:in `': can't modify frozen String (RuntimeError)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容