Ruby 中是否有反引号的替代语法?

Is there an alternate syntax in Ruby for backticks?

在Ruby中你可以做a + b,相当于a.+(b).

您还可以使用 def +(other); end 覆盖 +() 方法。

是否有反引号的替代语法?我知道这行得通:

class Foo
  def `(message)
    puts '<' + message + '>'
  end

  def bar
    `hello world`
  end
end

Foo.new.bar # prints "<hello world>"

但这行不通,例如

Foo.new.`hello world`

.+和反引号

没有区别

从上下文来看,messageString。所以用引号。

class Foo
  def `(message)
    puts '<' + message + '>'
  end
end

Foo.new.` 'hello world' #prints <hello world>

由于代码风格优于 use parentheses

Foo.new.`('hello world') #prints <hello world>

此代码在 rb 文件中完美运行。

有人可能会说它在 irb 中不起作用。但是 irb 不是灵丹妙药(例如,如果你在行首使用 .,而不是在行尾)。 所以如果你想在irb中使用它,就把它命名为

Foo.new.send(:`, 'hello world')