Ruby - 运算符

Ruby - 运算符 首页 / Ruby入门教程 / Ruby - 运算符

算术运算符

假设变量a=10,变量b=20,则-

链接:https://www.learnfk.comhttps://www.learnfk.com/ruby/ruby-operators.html

来源:LearnFk无涯教程网

OperatorRemarkExample
+相加a + b=30
-相减a - b= -10
*相乘a * b=200
/相除b/a=2
%取模b % a=0
**指数a**b=10 to the power 20

比较运算符

假设变量a=10,变量b=20,则-

链接:https://www.learnfk.comhttps://www.learnfk.com/ruby/ruby-operators.html

来源:LearnFk无涯教程网

OperatorRemarkExample
==相等(a == b) is not true.
!=不相等(a != b) is true.
>大于(a > b) is not true.
<小于(a < b) is true.
>=大于或等于(a >= b) is not true.
<=小于或等于(a <= b) is true.
<=>组合比较运算符(a <=> b) returns -1.
===用于在case语句的when子句中测试相等性。(1...10) === 5 returns true.
.eql?具有相同的类型和相同的值,则为true。1 == 1.0 returns true, but 1.eql?(1.0) is false.
equal?具有相同的对象ID,则为true。如果aObj是bObj的副本则aObj == bObj为true,则aObj.equal?bObj为false

赋值运算符

假设变量a=10,变量b=20,则-

链接:https://www.learnfk.comhttps://www.learnfk.com/ruby/ruby-operators.html

来源:LearnFk无涯教程网

OperatorRemarkExample
=赋值c=a + b will assign the value of a + b into c
+=相加c += a is equivalent to c=c + a
-=相减c -= a is equivalent to c=c - a
*=相乘c *= a is equivalent to c=c * a
/=相除c /= a is equivalent to c=c/a
%=取模c %= a is equivalent to c=c % a
**=指数c **= a is equivalent to c=c ** a

多值分配

Ruby还支持变量的并行分配。这使得可以用一行Ruby代码初始化多个变量。如-

a=10
b=20
c=30

使用并行分配可以更快地声明-

a, b, c=10, 20, 30

并行分配对于交换两个变量中保存的值也很有用-

a, b=b, c

按位运算符

按位运算符对位进行运算并执行逐位运算。

假设a=60;并且b=13;现在以二进制格式,它们将如下所示-

 a  =0011 1100
 b  =0000 1101
 ------------------
 a&b=0000 1100
 a|b=0011 1101
 a^b=0011 0001
 ~a =1100 0011

Ruby语言支持以下按位运算符。

OperatorRemarkExample
&and(a & b)=12, which is 0000 1100
|or(a | b)=61, which is 0011 1101
^XOR(a ^ b)=49, which is 0011 0001
~(~a )=-61, which is 1100 0011 in 2's complement form due to a signed binary number.
<<左移a << 2=240, which is 1111 0000
>>右移a >> 2=15, which is 0000 1111

逻辑运算符

Ruby语言支持以下逻辑运算符,假设变量 a =10,变量 b =20,则-

Operator描述Example
and称为逻辑AND运算符。 如果两个操作数都为true,则条件为true。(a and b) is true.
or称为逻辑或运算符。 如果两个操作数中的任何一个都不为零,则条件变为true。(a or b) is true.
&&称为逻辑AND运算符。 如果两个操作数都不为零,则条件变为true。(a && b) is true.
||称为逻辑或运算符。 如果两个操作数中的任何一个都不为零,则条件变为true。(a || b) is true.
!称为逻辑非运算符。 如果条件为真,则逻辑非运算符将为假。!(a && b) is false.
not称为逻辑非运算符。 如果条件为真,则逻辑非运算符将为假。not(a && b) is false.

三元运算符

还有一个运算符称为三元运算符。它首先对表达式的真值或假值求值,然后根据求值输出执行两个给定语句之一。条件运算符具有以下语法-

Operator
RemarkExample
? :条件表达式如果条件为true?然后取值X:否则取值Y

Range运算符

Ruby中的序列范围用于创建一系列连续值-由开始值,结束值以及介于两者之间的值范围组成。

在Ruby中,这些序列是使用" .."和" ..."范围运算符创建的。两点形式创建一个包含范围,而三点形式创建一个排除指定高值的范围。

Operator
RemarkExample
..创建一个从起点到终点的范围。 1..10创建一个介于1到10之间的范围。
...创建一个从起点到终点的范围。 1 ... 10创建1到9的范围。

defined? 运算符

defined?是一个特殊的运算符,采用方法调用的形式来确定是否定义了所传递的表达式。它返回表达式的描述字符串,如果未定义表达式,则返回 nil 

用法1

defined? variable # True if variable is initialized

无涯教程网

foo=42
defined? foo    # => "local-variable"
defined? $_     # => "global-variable"
defined? bar    # => nil (undefined)

用法2

defined? method_call # True if a method is defined

无涯教程网

defined? puts        # => "method"
defined? puts(bar)   # => nil (bar is not defined here)
defined? unpack      # => nil (not defined here)

用法3

# True if a method exists that can be called with super user
defined? super

无涯教程网

defined? super     # => "super" (if it can be called)
defined? super     # => nil (if it cannot be)

用法4

defined? yield   # True if a code block has been passed

无涯教程网

defined? yield    # => "yield" (if there is a block passed)
defined? yield    # => nil (if there is no block)

双冒号运算符

您可以通过在模块名称前加上模块名称和句点来调用模块方法,并使用模块名称和两个冒号引用常量。

::是一元运算符,它允许:在类或模块内定义的常量,方法和类方法可以从类或模块外部的任何位置进行访问。

这是两个示例-

MR_COUNT=0         # constant defined on main对象class
module Foo
   MR_COUNT=0
   ::MR_COUNT=1    # set global count to 1
   MR_COUNT=2      # set local count to 2
end
puts MR_COUNT        # this is the global constant
puts Foo::MR_COUNT   # this is the local "Foo" constant

第二个示例

CONST=' out there'
class Inside_one
   CONST=proc {' in there'}
   def where_is_my_CONST
      ::CONST + ' inside one'
   end
end
class Inside_two
   CONST=' inside two'
   def where_is_my_CONST
      CONST
   end
end
puts Inside_one.new.where_is_my_CONST
puts Inside_two.new.where_is_my_CONST
puts Object::CONST + Inside_two::CONST
puts Inside_two::CONST + CONST
puts Inside_one::CONST
puts Inside_one::CONST.call + Inside_two::CONST

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

Android开发高手课 -〔张绍文〕

面试现场 -〔白海飞〕

Java性能调优实战 -〔刘超〕

编辑训练营 -〔总编室〕

软件设计之美 -〔郑晔〕

正则表达式入门课 -〔涂伟忠〕

技术管理案例课 -〔许健〕

WebAssembly入门课 -〔于航〕

PPT设计进阶 · 从基础操作到高级创意 -〔李金宝(Bobbie)〕

好记忆不如烂笔头。留下您的足迹吧 :)