< :前の番号
^ :番号順リスト
> :次の番号
P :前の記事(スレッド移動)
N :次の記事(スレッド移動)
|<:前のスレッド
>|:次のスレッド
^ :返事先
_:自分への返事
>:同じ返事先を持つ記事(前)
<:同じ返事先を持つ記事(後)
---:分割してスレッド表示、再表示
| :分割して(縦)スレッド表示、再表示
~ :スレッドのフレーム消去
.:インデックス
..:インデックスのインデックス
Issue #16372 has been updated by shevegen (Robert A. Heiler).
If I understood you correctly then the suggestion is to allow both local and
instance variables become assignable, when before pattern matching would only
be possible to local variables, yes?
If that is the case then I think this might make sense, since we can assign
to local variables and instance variables as-is, so that would seem logical
to have pattern matching work on instance variables as well. It might be
useful to ask the ruby user who suggested pattern matching too about this,
perhaps there was a reason @variables were not considered (but it could
simply be that he did not think about it at all when suggesting the
feature).
----------------------------------------
Feature #16372: Allow pattern matching to bind instance variables
https://bugs.ruby-lang.org/issues/16372#change-82791
* 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: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>