Matz 決定在在Ruby3.0中默認凍結(jié)字符串,來提高程序的性能
為了有個過渡的過程,在Ruby2.3?增加了一個魔法注釋
# frozen_string_literal: true
那這個有什么用呢?
我們應該知道?字符串有一個這樣的方法就是
freeze, 它是我們主動用來凍結(jié)字符串
假設代碼我們使用
#app.rb
#凍結(jié)該字符串
CON = "string".freeze
#判斷該字符串時候被凍結(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新加的這行注釋?放在?文件的頭部,它就會默認將字符串凍結(jié)
如
# frozen_string_literal: true
CON = "string"
#判斷該字符串時候被凍結(jié)
p CON.frozen?
#嘗試修改
CON << "12"
puts CON
得出和前面一樣的結(jié)果是:
》》 true
》》 app.rb:7:in `': can't modify frozen String (RuntimeError)