什么是ruby中的比较器?它存在吗?

时间:2017-05-22 12:10:17

标签: ruby comparison string-comparison comparison-operators

我是Ruby新手并使用codecademy开始学习。我是关于比较器/关系运算符的主题,并以//作为比较器给出了一个示例。我在读什么代码?我错了?因为我无法找到//意味着什么,我不记得这样做了。

如果它确实存在,那是什么意思?

2 个答案:

答案 0 :(得分:5)

比较器是一个比较两个值的运算符,但Ruby中没有//运算符。

也许你把它与||混淆了?虽然这不是比较器,但它至少是运算符

顺便说一下,R​​uby中存在令牌// 确实。它不是一个运算符,而是一个正则表达式文字。它表示一个正则表达式,匹配任何字符串。

答案 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 literal

它仅作为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)
#          ^
相关问题