From: "jeremyevans0 (Jeremy Evans)" Date: 2021-10-07T18:06:10+00:00 Subject: [ruby-core:105595] [Ruby master Bug#18246] send does not work for unary ! operator when operator isn't a literal symbol Issue #18246 has been updated by jeremyevans0 (Jeremy Evans). Status changed from Open to Closed The method you are looking for is `!` and not `!@`. The reason `false.send(:!@)` works is that `:!@` is parsed as `:!`, that's why the unquoted version works but the quoted version does not. This was determined to be a feature and not a bug in #10463. ---------------------------------------- Bug #18246: send does not work for unary ! operator when operator isn't a literal symbol https://bugs.ruby-lang.org/issues/18246#change-94066 * Author: chucke (Tiago Cardoso) * Status: Closed * Priority: Normal * ruby -v: 3.0.2 * Backport: 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN ---------------------------------------- ```ruby 1.send(:+, 1) #=> 2 1.send(:"+", 1) #=> 2 1.send(:-@) #=> -1 1.send(:"-@") #=> -1 false.send(:!@) #=> true false.send(:"!@") #> # undefined method `!@' for false:FalseClass (NoMethodError) # Did you mean? != !~ ``` -- https://bugs.ruby-lang.org/ Unsubscribe: