环境
- Ruby: 3.1.0
最近在某个 gem 的代码里边发现了这样的代码
gem.files = `git ls-files`.split($/)
这个 "$/" 引起了我的注意。在网上查了下,原来这是一个 Ruby 的预定义变量,$ 开头表示这是一个全局变量。关于这个变量的定义是:
The input record separator (newline by default). gets, readline, etc., take their input record separator as optional argument
就是说它定义了输入分割符,这个变量会被 gets
和 readline
方法用到。默认的值是 "\n" ,不管是 *nix 环境还是 Windows 环境都是这个值。
irb(main):003:0> $/
=> "\n"
类似的还有另外的一些全局变量。可以参考 tutorialspoint 提供的 Ruby 教程里边的文章 ruby_predefined_variables