这是我的项目目录中的rspecbinstub
#/usr/bin/env ruby
开始
加载文件。展开\u路径(“../spring”,\u文件\u)
救援装载错误
终止
#冻结的字符串文字:true
#
#此文件由Bundler生成。
#
#应用程序“rspec”作为gem的一部分安装,并且
#此文件用于帮助运行它。
#
需要“路径名”
ENV[“BUNDLE_GEMFILE”]| |=File.expand_path(“../../GEMFILE”,
路径名.new(_文件\u_).realpath)
需要“rubygems”
需要“捆绑机/设置”
加载Gem.bin_路径(“rspec核心”、“rspec”)
这样做的目的是什么
#冻结的字符串文字:true
#freezed#u string_literal:true是一个神奇的注释,Ruby 2.3首次支持它,它告诉Ruby文件中的所有字符串都被隐式冻结,就好像对每个字符串都调用了#freeze。也就是说,如果在带有此注释的文件中定义了字符串文字,并且您对该字符串调用了一个方法来修改它,例如<<,您将得到运行时错误:无法修改冻结的字符串
注释必须位于文件的第一行
在Ruby 2.3中,您可以使用这个神奇的注释来准备Ruby 3中默认的冻结字符串文本
在Ruby 2.3中,使用--enable=freezed string literal标志运行,在Ruby 3中,所有文件中的字符串literal都被冻结。您可以使用#冻结的字符串\u文本:false覆盖全局设置
如果希望字符串文字在不考虑全局或每个文件设置的情况下都是可变的,则可以使用一元+运算符(注意运算符优先级)作为前缀,或对其调用.dup:
#冻结的字符串文字:true
”“冷冻的?
=>;符合事实的
(+)。冻结?
=>;错误的
“双重冻结?
=>;错误的
您还可以使用一元-冻结可变(未冻结)字符串