From: me@... Date: 2019-11-26T10:18:41+00:00 Subject: [ruby-core:95954] [Ruby master Feature#16372] Allow pattern matching to bind instance variables Issue #16372 has been reported by jnchito (Junichi Ito). ---------------------------------------- Feature #16372: Allow pattern matching to bind instance variables https://bugs.ruby-lang.org/issues/16372 * Author: jnchito (Junichi Ito) * Status: Open * Priority: Normal * Assignee: * Target version: ---------------------------------------- I tried this code, but got sytax error: ```ruby case [1, 2] in @a, @b end ``` ``` syntax error, unexpected instance variable, expecting '}' in @a, @b ^~ ``` I think it would be more useful if we could bind instance variables with pattern matching. ## Use case I understand this is not Rails way, but we have some codes like this: ```ruby def Foo.create_foo(params) if valid?(params) [:ok, create(params)] else [:ng, nil] end end class FooController < ApplicationController def create result, @foo = Foo.create_foo(foo_params) case result when :ok redirect_to @foo when :ng # @foo will be used in view render :new else raise "Unknown result: #{result}" end end end ``` I thought I could make it simpler with pattern matching (but impossible): ```ruby class FooController < ApplicationController def create case Foo.create_foo(foo_params) in :ok, @foo redirect_to @foo in :ng, _ render :new end end end ``` -- https://bugs.ruby-lang.org/ Unsubscribe: