[ruby-list:50884] パターンマッチングの値について

From: OOTANI TAKASHI <tksotn@...117.cx>
Date: 2020-05-10 11:10:36 UTC
List: ruby-list #50884
大谷と申します。

Ruby2.7のパターンマッチングなのですが、

A in B

の値は、マッチが成功したときに nil になるのはどういう意図なのでしょうか?

これが、成功時に真値を返してくれると、

data = [{name: "taro", age: 10},{name: "jiro", age: 8}]

age = nil
out = data.select{|x| x in {name: "taro", age: age} rescue nil}
p age #=> 10
p out #=> [{name: "taro", age: 10}]

や、

if (data[0] in {name: "taro", age: age} rescue nil)
    p age
end

と書けますが、現状は nil なので、

out = data.reject{|x| x in {name: "taro", age: age} rescue true}

と論理が逆になってしまいます。

そういう所は、パターンマッチングの使いどころじゃないと言うことなのでしょうか。


-- 
tksotn

In This Thread

Prev Next