From: "shan (Shannon Skipper) via ruby-core" <ruby-core@...>
Date: 2024-12-19T00:41:23+00:00
Subject: [ruby-core:120308] [Ruby master Bug#20965] `it` vs `binding.local_variables`

Issue #20965 has been updated by shan (Shannon Skipper).


It does seem like that last one should be `[:it]` for consistency if it wasn't intentional. +1

An aside, but it's also interesting that using `_2` causes `_1` to also be defined under Binding#local_variables.

``` ruby
proc { _9; local_variables }.call
# => [:_1, :_2, :_3, :_4, :_5, :_6, :_7, :_8, :_9]

proc { it; local_variables }.call
# => []
```


----------------------------------------
Bug #20965: `it` vs `binding.local_variables`
https://bugs.ruby-lang.org/issues/20965#change-111074

* Author: zverok (Victor Shepelev)
* Status: Open
* ruby -v: ruby 3.4.0dev (2024-12-15T13:36:38Z master 366fd9642f) +PRISM [x86_64-linux]
* Backport: 3.1: DONTNEED, 3.2: DONTNEED, 3.3: DONTNEED
----------------------------------------
`it` is not available in the list of `binding.local_varaibles`, **unlike** numbered parameters:

```ruby
p(proc { binding.local_variables }.call)  # []
p(proc { |x| binding.local_variables }.call)  # [:x]
p(proc { _1; binding.local_variables }.call)  # [:_1]
p(proc { vars = binding.local_variables; _1; vars }.call)  # [:_1, :vars]
p(proc { it; binding.local_variables }.call)  # []
```

I wonder if it is deliberate or accidental.



-- 
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/