Issue #16432 has been updated by nobu (Nobuyoshi Nakada).
It is same as the following code without irb.
```ruby
proc {
p eval("(1..10).map{_1+_1}") #=> [84, 84, 84, 84, 84, 84, 84, 84, 84, 84]
_1
}.call(42)
```
This is because the `eval` code is executed at the current context exactly.
Another choice is to raise a syntax error at the runtime.
----------------------------------------
Feature #16432: Using `_1` inside `binding.irb` will cause unintended behavior
https://bugs.ruby-lang.org/issues/16432#change-83245
* Author: osyo (manga osyo)
* Status: Open
* Priority: Normal
* Assignee:
* Target version:
----------------------------------------
## Summary
Calling `binding.irb` in a block that uses `_1` and using `_1` in `irb` will cause unintended behavior.
## Steps to reproduce
1. Use `_1` in block
2. Use `binding.irb` in block
3. Use block with `_1` in `binding.irb`
```ruby
# test.rb
proc {
binding.irb
_1
}.call 42
```
```ruby
# binding.irb
irb> (1..10).map { _1 + _1 }
```
## Expected behavior
```ruby
irb> _1
=> 42
irb> (1..10).map { _1 + _1 }
= > [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
```
## Actual behavior
* Refers to the `_1` of the block that called` binding.irb`
```ruby
irb> _1
=> 42
irb> (1..10).map { _1 + _1 }
= > [84, 84, 84, 84, 84, 84, 84, 84, 84, 84]
```
I think this is an unintended behavior for the user.
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:[email protected]?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.