rubykansaiくんのつぶやき (オブジェクトの比較の巻)

これは、関西に住むRubyistのコミュニティであるRuby関西の愛すべきキャラクター rubykansaiくんのつぶやきを集めたトゥギャッターなのである!
0
RubyKansai @rubykansai

今日はオブジェクトの比較の話でもしよか。 #rubykansai

2011-09-21 19:17:17
RubyKansai @rubykansai

他の言語といっしょで == で比べられるで。1 == 1 # => true # あたりまえやけど等しいな。 #rubykansai

2011-09-21 19:17:36
RubyKansai @rubykansai

さっきの == は Fixnum のメソッドなんや。1.respond_to?(:==) # => true #rubykansai

2011-09-21 19:19:24
RubyKansai @rubykansai

Float でもできるで。1.0 == 1.0 # => true #rubykansai

2011-09-21 19:20:55
RubyKansai @rubykansai

String でもできるわ。あたりまえやわな。"Ruby関西" == "Ruby関西" # => true #rubykansai

2011-09-21 19:21:45
RubyKansai @rubykansai

前も言うたけど Polymorphism いうやっちゃな。 #rubykansai

2011-09-21 19:26:41
つじたさとみ @satomicchy

respond_toてなんですか? RT @rubykansai: さっきの == は Fixnum のメソッドなんや。1.respond_to?(:==) # => true #rubykansai

2011-09-21 19:24:11
RubyKansai @rubykansai

respond_to? したら、そのオブジェクトにメソッドがあるかどうか教えてくれるんやで。RT @satomicchy: respond_toてなんですか?

2011-09-21 19:27:39
RubyKansai @rubykansai

1 == 1.0 # => true # Fixnum と Float でも値がいっしょやったら等しいねん。 #rubykansai

2011-09-21 19:30:16
RubyKansai @rubykansai

1 == "1" # => false # おっと無茶しすぎたわ。 #rubykansai

2011-09-21 19:30:53
RubyKansai @rubykansai

ちなみに 0.1 + 0.2 == 0.3 # => false # これが等しくならんのは別の問題やで。 #rubykansai

2011-09-21 19:32:58
RubyKansai @rubykansai

eql? いうメソッドもあるんやで。"Ruby関西".eql? "Ruby関西" # => true #rubykansai

2011-09-21 19:34:56
RubyKansai @rubykansai

== とはちょっと違うねん。1.eql? 1.0 # => false #rubykansai

2011-09-21 19:35:29
RubyKansai @rubykansai

equal? いうメソッドもあるんや。"Ruby関西".equal? "Ruby関西" # => false #rubykansai

2011-09-21 19:36:53
RubyKansai @rubykansai

値が同じでも違うオブジェクトやったら equal? は false を返すんや。["Ruby関西".object_id, "Ruby関西".object_id] # => [2151888700, 2151888680] #rubykansai

2011-09-21 19:37:48
RubyKansai @rubykansai

=~ いうメソッドは正規表現のマッチや。/ruby/i =~ "Ruby関西" # => 0 #rubykansai

2011-09-21 19:39:52
RubyKansai @rubykansai

戻り値が true でも false でもないって? Ruby では false と nil 以外は全部「真」やで! /php/ =~ "Ruby関西" # => nil #rubykansai

2011-09-21 19:40:45
RubyKansai @rubykansai

=== いうメソッドもあるんやで。1 === 1.0 # => true #rubykansai

2011-09-21 19:42:11
RubyKansai @rubykansai

=== は、こんな使い方すんねん。Fixnum === 1 # => true #rubykansai

2011-09-21 19:43:20
RubyKansai @rubykansai

他には、こんな使い方や。(1..9) === 5 # => true #rubykansai

2011-09-21 19:43:54
RubyKansai @rubykansai

そんな使い方したことないって? みんな直接 === は書けへんやろうけど case の when が === 使ってるんやで。 #rubykansai

2011-09-21 19:45:42
RubyKansai @rubykansai

今日の話はよう分からんかったって言われてんけど、分からんかったら質問してな。 #rubykansai

2011-09-21 20:23:06
RubyKansai @rubykansai

あと勉強会に来たら詳しい人ぎょうさんいてるから、いろいろ教えてもらえるで。 #rubykansai

2011-09-21 20:23:33