在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`
答案 0 :(得分:2)
.+
和反引号之间没有区别
从上下文中,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')