- 浏览: 1330213 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (732)
- Java_about (146)
- Spring_Hibernate_Struts_OpenSource (27)
- linux_unix (62)
- life_sth (22)
- js_css_html_xml_nodejs (69)
- design_pattens (1)
- Perl (8)
- php_ecshop (4)
- DB_Mysql_Oracle_Informix_SqlServer (43)
- JSTL (8)
- Testing_自动化测试 (42)
- DB_ID_UUID (4)
- SEM_SEO (1)
- english_study_improvement (4)
- SVN_Git (9)
- WebService_SOA_CloudComputing (3)
- E-Commerce (1)
- Lucene_Solr (7)
- others (2)
- Regex (2)
- tomcat_jetty (8)
- zeroc-ice (1)
- java_excel (5)
- ant_maven_gradle (5)
- Unity_VR_AR_C# (2)
- jmeter (1)
- XPath_dom4j (1)
- Ruby_and_Rails (68)
- write_a_rails (17)
- manage_and_team (1)
- getting_real (1)
- ubuntu (20)
- git_and_git_flow (7)
- TODO (1)
- PM_design (2)
- Python_and_Django (8)
- NoSql_mongo_redis (24)
- C/C++ (3)
- vi_vim_gvim (0)
- c#_.Net_windows编程_dll (10)
- Php_and_Yii (9)
- Android_IOS (31)
- Mysql (5)
- sa_运维_network_硬件 (37)
- lua (2)
- c_cpp_VisualStudio (21)
- 硬件-RM-Arduino (6)
最新评论
-
shenkun58:
...
NoClassDefFoundError: Could not initialize springframework.BeanCreationException -
liaojia1:
正解,感谢
NoClassDefFoundError: Could not initialize springframework.BeanCreationException -
flingfox63:
谢谢分享,电脑上有IPV6,导致了Guard启动不了……
ruby错误解决: Address family not supported by protocol - connect(2) -
c39274936:
s = "hello_world_ruby" ...
驼峰格式和下划线格式转换_translation between camel and snake format -
yfj300:
学习了学习了学习了学习了
硬盘基本知识(磁道、扇区、柱面、磁头数、簇、MBR、DBR)
看case时,碰见了3等号===操作符,需要确认一下细节了。
equal?
我们经常要比较两个对象,Ruby中提供了多种比较对象的方法。我们可以通过equal?方法比较两个对象是否相同,通过这种方式是比较两个值是否指向同一个对象的引用。比如:
a = "Ruby" # 一个字符串对象。 b = c = "Ruby" # 两个字符串对象指向动一个引用。 a.equal?(b) # false: a和b是不同的对象。 b.equal?(c) # true: b和c指向同一个引用。
这种比较方式实际上是比较两个对象的ID是否相同,显然a是一个对象,而b和c指向另一个对象,他们的对象ID是不同的:
a.object_id == b.object_id # 等同于 a.equal?(b)
==来比较对象是否相等
他的作用和equal?方法是不一样,它比较的是两个对象的内容是否相同:
a = "Ruby" # 定义一个字符串对象
b = "Ruby" # 虽然和a的内容相同,但是他们是不同的对象 a.equal?(b) # false: a和b指向不同的对象 a == b # true: 他们的内容是相同的
除了字符串外,数组和字典类也定义了==操作符,如果两个数组或两个字典对象中元素个数相同,且每个元素都相同,那么==返回true.
Numerics对象在比较的时候会做一个简单的最新转换,所以Fixnum类型的1和Float类型的1.0的比较结果是相等。
同样,你可以使用!=来判断两个对象是否不等。
eql?方法
Ruby还提供了eql?方法,它与equal?的功能相同,是一种更精炼的写法。
三个等号的比较操作===
通常情况下这中方式与==是一样的,但是在某些特定情况下,===有特殊的含义:
在Range中===用于判断等号右边的对象是否包含于等号左边的Range;
正则表达式中用于判断一个字符串是否匹配模式,
Class定义===来判断一个对象是否为类的实例,
Symbol定义===来判断等号两边的符号对象是否相同。
(1..10) === 5 # true: 5属于range 1..10
/\d+/ === "123" # true: 字符串匹配这个模式 String === "s" # true: "s" 是一个字符串类的实例 :s === "s" # true
备注:
比较让人烦的是java正相反。仔细想想,==用来比较值还是合理的,因为这个用处比较多,频率高。
来自:http://blogruby.blogspot.com/2008/10/22.html
====完毕====
I
I
I
!
I
I
I
评论
4 楼
reyesyang
2012-06-19
1.9.3p194 :013 > a=1 => 1 1.9.3p194 :014 > b=1 => 1 1.9.3p194 :019 > a.object_id => 3 1.9.3p194 :020 > b.object_id => 3
3 楼
reyesyang
2012-06-19
1.9.3p194 :019 > a.object_id => 3 1.9.3p194 :020 > b.object_id => 3
他们确实是同一个对象。
2 楼
fantaxy025025
2012-06-19
谢谢提醒!应该如你所说。
下面的实验结果,还是有些东西可以进一步思考的:
?> a = "fantaxy"
=> "fantaxy"
>> b = "fantaxy"
=> "fantaxy"
>> a == b
=> true
>> a.eql? b
=> true
>> a.equal? b #<<--here!
=> false
>>
?>
?> a = 1
=> 1
>> b = 1
=> 1
>> a == b
=> true
>> a.eql? b
=> true
>> a.equal? b #<<--here!
=> true
下面的实验结果,还是有些东西可以进一步思考的:
?> a = "fantaxy"
=> "fantaxy"
>> b = "fantaxy"
=> "fantaxy"
>> a == b
=> true
>> a.eql? b
=> true
>> a.equal? b #<<--here!
=> false
>>
?>
?> a = 1
=> 1
>> b = 1
=> 1
>> a == b
=> true
>> a.eql? b
=> true
>> a.equal? b #<<--here!
=> true
1 楼
reyesyang
2012-06-19
谢谢博主的总结整理,不过有一个问题:
不过按照官网文档,eql?和==比较类似,是比较值:
引用
eql?方法
Ruby还提供了eql?方法,它与equal?的功能相同,是一种更精炼的写法。
Ruby还提供了eql?方法,它与equal?的功能相同,是一种更精炼的写法。
不过按照官网文档,eql?和==比较类似,是比较值:
引用
The eql? method returns true if obj and anObject have the same value. Used by Hash to test members for equality. For objects of class Object, eql? is synonymous with ==. Subclasses normally continue this tradition, but there are exceptions. Numeric types, for example, perform type conversion across ==, but not across eql?, so:
1 == 1.0 #=> true
1.eql? 1.0 #=> false
1 == 1.0 #=> true
1.eql? 1.0 #=> false
发表评论
-
ruby计算平方和开方_n次方n次幂
2022-06-28 21:52 703= = = ruby计算平方和开方 3 ** 2#= ... -
Ruby发送HTTP请求
2015-07-21 18:06 1195Ruby使用HTTP协议发送请求的方法备忘。 好像这 ... -
invalid byte sequence in GBK”问题 invalid byte sequence in UTF-8”问题
2015-07-03 15:11 2897碰见错误: test.rb:8:in `ma ... -
Ruby1.9之字符串内编码和外编码
2015-07-02 17:52 1316这里的文章很不错的么:Rubyist http://ru ... -
DevKit介绍和安装in railsInstaller
2015-05-26 17:01 2665DevKit介绍和安装in railsInstaller ... -
Rails_migrations中使用mysql的bigint
2014-09-30 14:32 1039From:http://rubyer.me/blog/468 ... -
Rails外如何启动rails的类自动加载_activates autoloading using ActiveSupport 3.x
2016-06-22 12:08 705The following cod ... -
如何在rails里打开gem里面的类_为何有时候不生效
2014-09-02 21:55 985在rails里面打开某个gem的类,补充一下等等,也 ... -
ruby的加载机制和rails_自动加载机制_对比
2014-09-02 16:51 1614prefer:http://urbanautomat ... -
Rails源码阅读(13)rails中的autoload和ruby的autoload
2014-07-30 17:13 2009Rails源码阅读(13)rails中的autoload和 ... -
Rails中命名路由的区别***_url与***_path
2014-07-29 16:37 1116Rails中命名路由的区别***_url与***_path ... -
ruby_gem安装_切换指定不同的源
2014-07-20 18:09 1182from:http://www.hiceon.com/to ... -
Ruby 的文件操作_不断总结
2014-07-11 11:55 1222一、用文件和目 ... -
Rails源码阅读(12)叫Rails的模块module_Rails常量使用
2014-07-02 09:35 1136The module nams "Rail ... -
注册邮件中的链接无host
2014-05-19 14:47 640在注册邮件中用命名路由的xxx_url不起作用,导致注 ... -
每个命令都有bundle exec的麻烦
2014-04-18 17:33 1462问题: 每次都得搞这个东西bundle exec放在 ... -
关于favicon.ico的报错:RoutingError
2014-03-31 14:45 2004错误: ActionController::Routin ... -
rbenv_安装太慢_解决办法
2014-03-31 13:51 2228rvm做了很多“不为人知”的事情,而且做的太 ... -
配置sunspot tomcat结合sunspot_rails
2014-02-26 10:58 949这个sunspot的东西还是有不少缺点的。 ht ... -
RubyOrRails_使用技巧_收集
2013-11-09 14:39 1109#link_to not working in sc ...
相关推荐
在编程中,“_equal_scalar”通常表示一个操作,它将某个值(标量)与另一个变量相加。在C语言中,这可以通过简单的赋值运算符"+"来实现。例如,如果你有一个整型变量`int a = 5;`,然后执行`a += 3;`,那么`a`的值...
虽然在描述中提到了Ruby,但在这个场景中,我们更关注的是Swift的实现。 首先,我们需要导入必要的框架。`AVFoundation`框架提供了对音频和视频处理的支持,包括访问设备的摄像头。在Swift代码的顶部,添加以下导入...
例如,`assert_equal`在Minitest中用于比较预期值和实际值,而RSpec中的`expect`或`should`方法可以做同样的事情。 4. **模拟对象**(Mocks & Stubs):在RSpec中,我们可以创建模拟对象来代替真实的依赖,以便在...
在Ruby编程语言中,Minitest是一个轻量级的测试框架,它被广泛用于编写单元测试和集成测试。Ruby Calculator Minitest项目很可能是用来创建一个简单的计算器应用,并使用Minitest来验证其功能的正确性。这个项目的...
vector_equal_check.m
3. `equal_function`:比较两个范围是否相等的函数,可能会结合哈希值的比较来优化性能。 4. `stipple_pattern`:定义了纹章图案,通常是一个二维数组,用于决定哪些像素可见,哪些像素隐藏。 5. `apply_stipple`:...
在这个名为“hist_equal.zip”的压缩包中,包含两个与直方图均衡化相关的IDL程序文件:`hist_equal_02.pro` 和 `he_hist_equal_12_1.pro`。 首先,我们来理解一下直方图均衡化的概念。直方图是描述图像像素灰度值...
在Ruby编程语言中,有四种主要的比较函数:equal?, eql?, == 和 ===。每种函数在特定场景下都有其独特的用途,理解它们的区别对于编写精确的代码至关重要。 1. **equal?**: - `equal?` 是用来判断两个对象是否在...
"RD_equal9x8"可能是指特定的优化配置,其中“equal9x8”可能意味着一种特定的量化矩阵设置,比如9x8的块大小用于处理数据。在这个场景中,"点目标"可能是指算法在处理图像或视频时特别关注单个像素点或者说是细节...
标题中的“cersistence_micro_equal.rar”可能是指一个关于持续性通信技术或微型通信系统的压缩文件,结合描述中的“02490rxP802-15_SG3a-”字样,我们可以推测这可能涉及到无线通信标准,如IEEE 802.15.4或类似的低...
his_equal.v
3. **隔离度**:功分器的两个输出端之间应有良好的隔离,即互不干扰,降低串扰。 4. **相位差**:在两个输出端口间,信号的相位差通常为180度,这有利于信号的合成或信号分路。 在"equal_divider_wrk"中,可能包含...
"Matlab.zip_equal3zg_matlab源代码"是一个压缩包,其中包含了多个MATLAB编程的源代码文件,特别适合那些刚开始学习MATLAB编程的新手。MATLAB是一种强大的数学计算和数据分析环境,广泛应用于工程、科学计算以及数据...
"ruby测试代码1"可能指的是一个具体的测试用例或者测试框架的实例,用于验证Ruby程序的功能和性能。Ruby提供了多种测试工具,如MiniTest、RSpec和Cucumber等,它们各自有其特点和适用场景。 MiniTest是Ruby标准库的...
在Ruby编程语言中,Selenium-Webdriver是一个强大的工具,用于进行自动化Web浏览器测试。它允许开发者编写脚本来模拟用户与网页的交互,从而验证应用的功能和行为。本篇文章将深入探讨如何使用Ruby和Selenium-...
`,这里定义了一个名为`FourBitComparator`的模块,它有4位输入a和b,以及两个输出greater(表示a是否大于b)和equal(表示a是否等于b)。 2. **逻辑运算符**:在Verilog中,我们可以使用逻辑运算符(如`&`、`|`、`...
在未来的学习计划中,深化对Ruby面向对象编程的理解,以及执行和分析测试用例,这些都是巩固编程技能的关键步骤。通过不断地实践和学习,不仅能提升个人能力,还能为团队的整体效率带来显著提升。