红宝石管道操作员
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 红宝书笔记之如何使用对象 如何操作数组