Enviar búsqueda
Cargar
All Objects are created .equal?
•
0 recomendaciones
•
539 vistas
G
gsterndale
Seguir
Understanding equality in your Ruby codez https://github.com/gsterndale/equality
Leer menos
Leer más
Tecnología
Entretenimiento y humor
Denunciar
Compartir
Denunciar
Compartir
1 de 30
Descargar ahora
Descargar para leer sin conexión
Recomendados
ScotRuby - Dark side of ruby
ScotRuby - Dark side of ruby
Gautam Rege
Licão 10 operators
Licão 10 operators
Acácio Oliveira
F# intro
F# intro
Alexey Raga
Refactor like a boss
Refactor like a boss
gsterndale
Web 2.0 - Beta
Web 2.0 - Beta
vaclav.lohr
Performance Architecture Manifesto
Performance Architecture Manifesto
sirlegendary
SIR Brochure
SIR Brochure
sirlegendary
School Presentation St Peter's RC Primary School and Nursery
School Presentation St Peter's RC Primary School and Nursery
Tiina Sarisalmi
Recomendados
ScotRuby - Dark side of ruby
ScotRuby - Dark side of ruby
Gautam Rege
Licão 10 operators
Licão 10 operators
Acácio Oliveira
F# intro
F# intro
Alexey Raga
Refactor like a boss
Refactor like a boss
gsterndale
Web 2.0 - Beta
Web 2.0 - Beta
vaclav.lohr
Performance Architecture Manifesto
Performance Architecture Manifesto
sirlegendary
SIR Brochure
SIR Brochure
sirlegendary
School Presentation St Peter's RC Primary School and Nursery
School Presentation St Peter's RC Primary School and Nursery
Tiina Sarisalmi
What WELD does
What WELD does
Reid Williams
plaY [commercial]
plaY [commercial]
smwarfield
Personagraph Whitepaper
Personagraph Whitepaper
Tapan Kamdar
Digital Trends Impacting News Companies
Digital Trends Impacting News Companies
Reid Williams
Server Side 2009
Server Side 2009
vaclav.lohr
Copyright and Fair Use for USU Extension
Copyright and Fair Use for USU Extension
Britt Fagerheim
Third comeback report 4.8,2011
Third comeback report 4.8,2011
Carlos Miranda Levy
Ctm louvre
Ctm louvre
claireso
The vmware story
The vmware story
Gian Marco Pizzuti
Change history with Git
Change history with Git
gsterndale
Czech Day in Kozani
Czech Day in Kozani
Tiina Sarisalmi
Como subir una actividad o tarea a moodle
Como subir una actividad o tarea a moodle
Jose Ramirez
Sinsai.info and Crisis Mapping
Sinsai.info and Crisis Mapping
Carlos Miranda Levy
SEO pro manažery
SEO pro manažery
vaclav.lohr
Smartfren Network Test Drive Jakarta - Yogyakarta
Smartfren Network Test Drive Jakarta - Yogyakarta
Jarwadi MJ
Lunch Menus and Recipes from Portugal
Lunch Menus and Recipes from Portugal
Tiina Sarisalmi
Integrating Library Resources into Blackboard
Integrating Library Resources into Blackboard
Britt Fagerheim
Christmas Handicraft by Thanasis
Christmas Handicraft by Thanasis
Tiina Sarisalmi
Kort Om Etikk2
Kort Om Etikk2
guest8e448c
Library As Teaching Resource
Library As Teaching Resource
Britt Fagerheim
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
wesley chun
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Deepika Singh
Más contenido relacionado
Destacado
What WELD does
What WELD does
Reid Williams
plaY [commercial]
plaY [commercial]
smwarfield
Personagraph Whitepaper
Personagraph Whitepaper
Tapan Kamdar
Digital Trends Impacting News Companies
Digital Trends Impacting News Companies
Reid Williams
Server Side 2009
Server Side 2009
vaclav.lohr
Copyright and Fair Use for USU Extension
Copyright and Fair Use for USU Extension
Britt Fagerheim
Third comeback report 4.8,2011
Third comeback report 4.8,2011
Carlos Miranda Levy
Ctm louvre
Ctm louvre
claireso
The vmware story
The vmware story
Gian Marco Pizzuti
Change history with Git
Change history with Git
gsterndale
Czech Day in Kozani
Czech Day in Kozani
Tiina Sarisalmi
Como subir una actividad o tarea a moodle
Como subir una actividad o tarea a moodle
Jose Ramirez
Sinsai.info and Crisis Mapping
Sinsai.info and Crisis Mapping
Carlos Miranda Levy
SEO pro manažery
SEO pro manažery
vaclav.lohr
Smartfren Network Test Drive Jakarta - Yogyakarta
Smartfren Network Test Drive Jakarta - Yogyakarta
Jarwadi MJ
Lunch Menus and Recipes from Portugal
Lunch Menus and Recipes from Portugal
Tiina Sarisalmi
Integrating Library Resources into Blackboard
Integrating Library Resources into Blackboard
Britt Fagerheim
Christmas Handicraft by Thanasis
Christmas Handicraft by Thanasis
Tiina Sarisalmi
Kort Om Etikk2
Kort Om Etikk2
guest8e448c
Library As Teaching Resource
Library As Teaching Resource
Britt Fagerheim
Destacado
(20)
What WELD does
What WELD does
plaY [commercial]
plaY [commercial]
Personagraph Whitepaper
Personagraph Whitepaper
Digital Trends Impacting News Companies
Digital Trends Impacting News Companies
Server Side 2009
Server Side 2009
Copyright and Fair Use for USU Extension
Copyright and Fair Use for USU Extension
Third comeback report 4.8,2011
Third comeback report 4.8,2011
Ctm louvre
Ctm louvre
The vmware story
The vmware story
Change history with Git
Change history with Git
Czech Day in Kozani
Czech Day in Kozani
Como subir una actividad o tarea a moodle
Como subir una actividad o tarea a moodle
Sinsai.info and Crisis Mapping
Sinsai.info and Crisis Mapping
SEO pro manažery
SEO pro manažery
Smartfren Network Test Drive Jakarta - Yogyakarta
Smartfren Network Test Drive Jakarta - Yogyakarta
Lunch Menus and Recipes from Portugal
Lunch Menus and Recipes from Portugal
Integrating Library Resources into Blackboard
Integrating Library Resources into Blackboard
Christmas Handicraft by Thanasis
Christmas Handicraft by Thanasis
Kort Om Etikk2
Kort Om Etikk2
Library As Teaching Resource
Library As Teaching Resource
Último
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
wesley chun
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Deepika Singh
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
Product Anonymous
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
apidays
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
Nanddeep Nachan
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
Martijn de Jong
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
DianaGray10
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
Dropbox
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
Khushali Kathiriya
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
wesley chun
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
Rustici Software
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
Overkill Security
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Edi Saputra
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
Zilliz
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
apidays
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
sudhanshuwaghmare1
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
sammart93
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
debabhi2
Último
(20)
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
All Objects are created .equal?
1.
All Objects Are
Created .equal? Understand equality in your Ruby codez
2.
github.com/gsterndale/equality
3.
Equality methods a ==
b a === b a.eql? b a.equal? b
4.
==
5.
Everyday equality (==) a
== b
6.
Default == a =
MyBasicClass.new b = MyBasicClass.new a == b # => false b = a a == b # => true
7.
Overriding == class RomanNumeral
def ==(other) if other.respond_to?(:to_f) self.to_f == other.to_f else false end end end
8.
Overriding == iv
= RomanNumeral.new('IV') iiii = RomanNumeral.new('IIII') iv == iiii # => true
9.
===
10.
case statement equality
(===) a === b
11.
Default === a =
Object.new b = Object.new case a when b 'b must === a' else 'b must NOT === a' end # => "b must NOT === a"
12.
Float === a =
1 b = 1.0 case a when b 'b must === a' else 'b must NOT === a' end # => "b must === a"
13.
Regexp === case '123' when
/d+/ 'At least one number' else 'No numbers found' end # => "At least one number"
14.
When === !=
== /d+/ == '123' # => false /d+/ === '123' # => true
15.
Class === case 'abc' when
String 'It is a String!' else 'Not a String' end # => "It is a String!"
16.
Asymmetry /d+/ === '123' #
=> true '123' === /d+/ # => false
17.
Asymmetry 2 === Integer #
=> false Integer === 2 # => true Fixnum === 2 # => true
18.
.equal?
19.
Object equality (.equal?) a
= 'FOO' b = a a.equal? b # => true a.equal? 'FOO' # => false
20.
.eql?
21.
Hash key equality
(.eql?) a.eql? b
22.
Default .eql? foo =
Object.new hash = { foo => 'My value' } bar = Object.new foo.equal? bar # => false foo.eql? bar # => false hash[bar] # => nil
23.
String .eql? foo =
'My Key' hash = { foo => 'My value' } bar = 'My Key' foo.equal? bar # => false foo.eql? bar # => true hash[bar] # => "My value"
24.
Overriding .eql? class RomanNumeral
def eql?(other) other.kind_of?(RomanNumeral) && self.to_i.eql?(other.to_i) end end
25.
Overriding .eql? iv
= RomanNumeral.new('IV') hash = { iv => 'Four' } iiii = RomanNumeral.new('IIII') iv.equal? iiii # => false iv.eql? iiii # => true hash[iiii] # => "Four"
26.
Comparable
27.
Comparison methods # You
must define <=> a <=> b # => -1, 0, 1 -or- nil a == b a > b a < b a >= b a <= b c.between?(a, b)
28.
Overriding <=> class RomanNumeral
def <=>(other) if other.respond_to?(:to_f) self.to_f <=> other.to_f else nil end end end
29.
Overriding <=> v =
RomanNumeral.new('V') x = RomanNumeral.new('X') v <=> x # => -1 v >= x # => false RomanNumeral.new('VIII').between?(v, x) # => true
30.
Sorting Enumerables iv
= RomanNumeral.new('IV') iiii = RomanNumeral.new('IIII') x = RomanNumeral.new('X') [iv, x, iiii] # => [IV, X, IIII] [iv, x, iiii].sort # => [IV, IIII, X]
Descargar ahora