From: "nobu (Nobuyoshi Nakada) via ruby-core" Date: 2025-03-18T08:40:02+00:00 Subject: [ruby-core:121397] [Ruby Feature#21190] Proposal for the Deconstruct Method in the MatchData Class Issue #21190 has been updated by nobu (Nobuyoshi Nakada). `Match#destruct` and `Match#destruct_keys` have been defined since ruby 3.2. `Match#destruct` is an alias of `Match#captures` like @jeremyevans0 wrote, so your regexp match does not match 4-element pattern. ```ruby result = /(\d{2})(\d{2})(\d{9})/.match("5586987654321") p result.deconstruct #=> ["55", "86", "987654321"] p (result in [_, country_code, area_code, number]) #=> false p (result in [country_code, area_code, number]) #=> true p [country_code, area_code, number] #=> ["55", "86", "987654321"] ``` ---------------------------------------- Feature #21190: Proposal for the Deconstruct Method in the MatchData Class https://bugs.ruby-lang.org/issues/21190#change-112371 * Author: aristotelesbr (Arist�teles Costa) * Status: Closed ---------------------------------------- ## Context: The MatchData class currently lacks the deconstruct method, which is necessary for extracting values from a string using pattern matching in Ruby. ## Current Extraction Method Currently, extraction can be done as follows: ```rb result = /(\d{2})(\d{2})(\d{9})/.match("5586987654321") puts result[1] # => "55" puts result[2] # => "86" puts result[3] # => "987654321" ``` ## Proposed Solution: Implement the deconstruct method in the MatchData class to allow conversion of the MatchData object into an array, enabling deconstruction of its components. ```rb class MatchData def deconstruct self.to_a end end result = /(\d{2})(\d{2})(\d{9})/.match("5586987654321") result in [_ , country_code, area_code, number] puts country_code # => "55" puts area_code # => "86" puts number # => "987654321" ``` -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/