Skip to content

Commit

Permalink
Merge pull request #2839 from kyanagi/fix_object_eqq
Browse files Browse the repository at this point in the history
`Object#===` の修正
  • Loading branch information
znz authored Oct 26, 2023
2 parents fce29f7 + f83eb60 commit 49df475
Showing 1 changed file with 17 additions and 15 deletions.
32 changes: 17 additions & 15 deletions refm/api/src/_builtin/Object
Original file line number Diff line number Diff line change
Expand Up @@ -694,11 +694,12 @@ p :ruby.hash #=> 3979895509189707770

--- ===(other) -> bool

メソッド [[m:Object#==]] の別名です。
case 式で使用されます。このメソッドは case 式での振る舞いを考慮して、
case 式で使用されるメソッドです。[[ref:d:spec/control#case]] も参照してください。

このメソッドは case 式での振る舞いを考慮して、
各クラスの性質に合わせて再定義すべきです。

一般的に所属性のチェックを実現するため適宜再定義されます
デフォルトでは内部で [[m:Object#==]] を呼び出します

when 節の式をレシーバーとして === を呼び出すことに注意してください。

Expand All @@ -708,19 +709,20 @@ when 節の式をレシーバーとして === を呼び出すことに注意し

#@samplecode
age = 12
# (0..2).===(12), (3..6).===(12), ... が実行される
result =
case age
when 0 .. 2
"baby"
when 3 .. 6
"little child"
when 7 .. 12
"child"
when 13 .. 18
"youth"
else
"adult"
end
case age
when 0 .. 2
"baby"
when 3 .. 6
"little child"
when 7 .. 12
"child"
when 13 .. 18
"youth"
else
"adult"
end

puts result #=> "child"

Expand Down

0 comments on commit 49df475

Please sign in to comment.