红宝石管道操作员

Posted

技术标签:

【中文标题】红宝石管道操作员【英文标题】:ruby pipe operator 【发布时间】:2012-06-25 06:49:13 【问题描述】:

我是 ruby​​ 新手,看到了这段代码 sn-p

1|2

它返回 3

| 运算符实际上是做什么的?我似乎找不到任何关于它的文档。此外,在这种情况下,它是否被称为“管道”运算符?还是叫别的?

【问题讨论】:

【参考方案1】:

这是一个位运算符,它们直接处理值的二进制表示。

| 表示或。让我告诉你它是如何工作的。

1|2 = 3 幕后发生的事情是:

1 = 0001
2 = 0010
--------
3 = 0011 <- result

另一个例子:

10|2 = 10 现在是二进制:

10 = 1010
2  = 0010
--------
10 = 1010 <- result

【讨论】:

【参考方案2】:

在 Ruby 中,“操作符”实际上是方法调用。它们由每个类定义。

1 和 2 是 Fixnum,因此在 1|2 管道中执行“按位或”。

Ruby doc

Bitwise info

【讨论】:

哎呀,是的,我什至没有考虑按位或。当我看到 1|2 结果是 3 时,我立刻想到了加法,这让我很困惑。【参考方案3】:

它是按位或运算符。

http://www.java2s.com/Code/Ruby/Language-Basics/dobitwiseoperationsinRuby.htm

【讨论】:

啊,是的,和许多其他语言一样...不知道为什么我认为它做了其他事情,谢谢。

以上是关于红宝石管道操作员的主要内容,如果未能解决你的问题,请参考以下文章

javascript 红宝书笔记之如何使用对象 如何操作数组

mongoDB查询进阶聚合管道 -- 阶段操作符

红宝石和指针

#tty 是啥?在标准输入上的意思/在红宝石中做?

猎豹MFC--TH_双管道--对管道的操作就想对文件的操作一样

MongoDB——聚合管道之$limit&$skip&$sort操作