红宝石中百分号 + 管道运算符的含义是什么,就像在 "%|" 中一样?



我正在努力理解这个网站上呈现的脚本:

#!/usr/bin/env ruby
require ENV['TM_SUPPORT_PATH'] + '/lib/escape.rb'
def terminal_script_filepath
  %|tell application "Terminal"
      activate
      do script "jsc -i #{e_as(e_sh(ENV['TM_FILEPATH']))}"
    end tell|
end
open("|osascript", "w") { |io| io << terminal_script_filepath }

最重要的是,函数terminal_script_filepath

开头的部分:
%| …
… |

…以及在

中"解析"的位置:
{ |io| io << terminal_script_filepath }

这里使用了Ruby的哪些概念?

我知道带管道的open()可以帮助我将输入输入到进程的STDIN,但是输入如何从terminal_script_filepathio ?我也知道基本的%操作与字符串,像%w,但这里的管道做什么?

字符串。在ruby中,可以用多种方式定义字符串。单引号或双引号是最常见的,%s是另一个。您还可以定义带有任何分隔符的字符串,就像这个脚本中使用的那样。例如%^Is also a string^%$Also a string$。你只需要确保不要在字符串中使用这些字符。

在本例中,<<被用作连接操作,将字符串附加到文件中,或者在本例中,是侦听AppleScript的管道。

这是另一个字符串字面值的例子:

var = %|foobar|
var.class # => String

可以使用任何一个非字母数字字符作为分隔符,如下所示:

var = %^foobar^
var.class # => String

最新更新