- 浏览: 1248090 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (729)
- Java_about (144)
- Spring_Hibernate_Struts_OpenSource (27)
- linux_unix (62)
- life_sth (21)
- 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 504= = = ruby计算平方和开方 3 ** 2#= ... -
Ruby发送HTTP请求
2015-07-21 18:06 1087Ruby使用HTTP协议发送请求的方法备忘。 好像这 ... -
invalid byte sequence in GBK”问题 invalid byte sequence in UTF-8”问题
2015-07-03 15:11 2720碰见错误: test.rb:8:in `ma ... -
Ruby1.9之字符串内编码和外编码
2015-07-02 17:52 1200这里的文章很不错的么:Rubyist http://ru ... -
DevKit介绍和安装in railsInstaller
2015-05-26 17:01 2567DevKit介绍和安装in railsInstaller ... -
Rails_migrations中使用mysql的bigint
2014-09-30 14:32 928From:http://rubyer.me/blog/468 ... -
Rails外如何启动rails的类自动加载_activates autoloading using ActiveSupport 3.x
2016-06-22 12:08 550The following cod ... -
如何在rails里打开gem里面的类_为何有时候不生效
2014-09-02 21:55 881在rails里面打开某个gem的类,补充一下等等,也 ... -
ruby的加载机制和rails_自动加载机制_对比
2014-09-02 16:51 1487prefer:http://urbanautomat ... -
Rails源码阅读(13)rails中的autoload和ruby的autoload
2014-07-30 17:13 1850Rails源码阅读(13)rails中的autoload和 ... -
Rails中命名路由的区别***_url与***_path
2014-07-29 16:37 1010Rails中命名路由的区别***_url与***_path ... -
ruby_gem安装_切换指定不同的源
2014-07-20 18:09 1089from:http://www.hiceon.com/to ... -
Ruby 的文件操作_不断总结
2014-07-11 11:55 1086一、用文件和目 ... -
Rails源码阅读(12)叫Rails的模块module_Rails常量使用
2014-07-02 09:35 985The module nams "Rail ... -
注册邮件中的链接无host
2014-05-19 14:47 582在注册邮件中用命名路由的xxx_url不起作用,导致注 ... -
每个命令都有bundle exec的麻烦
2014-04-18 17:33 1345问题: 每次都得搞这个东西bundle exec放在 ... -
关于favicon.ico的报错:RoutingError
2014-03-31 14:45 1860错误: ActionController::Routin ... -
rbenv_安装太慢_解决办法
2014-03-31 13:51 2077rvm做了很多“不为人知”的事情,而且做的太 ... -
配置sunspot tomcat结合sunspot_rails
2014-02-26 10:58 796这个sunspot的东西还是有不少缺点的。 ht ... -
RubyOrRails_使用技巧_收集
2013-11-09 14:39 1004#link_to not working in sc ...
相关推荐
本文给大家详细介绍了Ruby中的4种比较函数(equal?, eql?, ==, ===)的用法,并用具体示例进行了讲解,希望对大家学习ruby能够有所帮助。
vector_equal_check.m
quotearg.c - quote arguments for output.
Apply polygon stipple to quads produced by triangle rasterization Source Code for Linux v2.13.6.
cb25a_c++_函数对象简介 预定义的函数对象 https://blog.csdn.net/txwtech/article/details/104382505 negate() plus() minus() multilies() divides() modulus() equal_to() not_equal_to() less() greater() less_...
RD算法,点目标
基于BP算法的massive mimo的均衡算法
his folder contains the following files 1 02490rxP802-15_SG3a-
多个matlab代码,十分适合刚接触matlab的同学
JAVA Integer == equal 比较 doc 比较大小 是否相等
NOTE: This file contains definitions for the base types and the XAAPIENTRY macro. This file WILL NEED TO BE EDITED to provide the correct definitions specific to the platform being used.
该资源包含全套的威尔金森功分器仿真(原理图,版图等),适用于新手参考学习
海洋温度数据,适用于2020美赛A题。
bins_idx = split_vector_into_equal_sized_bins( input_vect , N_per_bin ) 给定一个向量分成大小相等的 bin,每个 bin 中有 N_per_bin 元素返回每个元素的 bin 差异 w/discretize() 是 discretize() 制作宽度均匀...
Valid flags for the 3rd argument to the function that is passed as the second argument to ftw(3) and nftw(3).
OFDM系统中时域均衡的仿真和结果分析,先对搭建的最基本的OFDM系统性能进行仿真分析,然后对在多径信道下的OFDM系统性能进行仿真分析,最后对MMSE算法进行仿真分析。
stata十八讲的软件教程详细讲述了stata入门,并结合具体案例讲述软件实现
安卓通讯录 通过简单的介绍,告诉我们如何初步建设安卓通讯录
这是一个控制台 java 程序,旨在在批处理文件中用于比较多对文件。 为了仅比较几个文件,存在其他(图形)解决方案。 1-打开控制台,进入files_equal.jar所在目录。 2-Type:java -jar files_equal.jar file1 file2 ...