1

我对$变量在这部分 EventMachine 代码中的工作方式感到困惑(strip_op是一种String#sub方法):

def receive_data(data)
      @buf = @buf ? @buf << data : data

      while (@buf && !@closing)
        case @parse_state
        when AWAITING_CONTROL_LINE
          case @buf
          when PUB_OP
            ctrace('PUB OP', strip_op($&)) if NATSD::Server.trace_flag?
            return connect_auth_timeout if @auth_pending
            @buf = $'
            @parse_state = AWAITING_MSG_PAYLOAD
            @msg_sub, @msg_reply, @msg_size = $1, $3, $4.to_i

$&, $',等的含义是什么$1

4

1 回答 1

4

那些包含最后一次正则表达式匹配的部分。$&:匹配的子字符串,$':匹配后的子字符串,:匹配$1的第一个捕获的子字符串。

于 2013-01-11T02:59:58.823 回答