我是Ruby新手并使用codecademy开始学习。我是关于比较器/关系运算符的主题,并以//
作为比较器给出了一个示例。我在读什么代码?我错了?因为我无法找到//
意味着什么,我不记得这样做了。
如果它确实存在,那是什么意思?
答案 0 :(得分:5)
比较器是一个比较两个值的运算符,但Ruby中没有//
运算符。
也许你把它与||
混淆了?虽然这不是比较器,但它至少是运算符。
//
确实。它不是一个运算符,而是一个正则表达式文字。它表示一个正则表达式,匹配任何字符串。
答案 1 :(得分:2)
Ruby中没有//
运算符。它根本不是合法的语法:
1 // 2
# unterminated regexp meets end of file
# syntax error, unexpected tSTRING_END, expecting tSTRING_CONTENT or tREGEXP_END or tSTRING_DBEG or tSTRING_DVAR
它仅作为Regexp
字面值合法,例如:
// =~ 'foo'
'foo' =~ //
'foo'.split(//) #=> ['f', 'o', 'o']
后者实际上曾经是String#chars
方法引入之前的常用习语。
但作为运营商并不合法。当然,可以创建一个具有该名称的方法:
class Foo
define_method(:'//') do |*args| p __callee__, args end
end
但您只能使用反射发送相应的消息:
foo = Foo.new
foo.public_send(:'//', 1, 2, 3)
# :"//"
# [1, 2, 3]
不正常:
foo.//(1, 2, 3)
# syntax error, unexpected ',', expecting ')'
# foo.//(1, 2, 3)
# ^