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`
.+
和反引号
没有区别
从上下文来看,message
是String
。所以用引号。
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')
在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`
.+
和反引号
从上下文来看,message
是String
。所以用引号。
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')