ml.ruby-lang.org
Sign In Sign Up
Manage this list Sign In Sign Up

Keyboard Shortcuts

Thread View

  • j: Next unread message
  • k: Previous unread message
  • j a: Jump to all threads
  • j l: Jump to MailingList overview

ruby-core

Thread Start a new thread
Download
Threads by month
  • ----- 2026 -----
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2025 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2024 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2023 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2022 -----
  • December
  • November
ruby-core@ml.ruby-lang.org

August 2023

  • 2 participants
  • 211 discussions
[ruby-core:114333] [Ruby master Bug#19795] attr_accessor leading to nil values for re-assignment
by francktrouillez (Franck Trouillez) 02 Aug '23

02 Aug '23
Issue #19795 has been reported by francktrouillez (Franck Trouillez). ---------------------------------------- Bug #19795: attr_accessor leading to nil values for re-assignment https://bugs.ruby-lang.org/issues/19795 * Author: francktrouillez (Franck Trouillez) * Status: Open * Priority: Normal * ruby -v: ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-linux] * Backport: 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN ---------------------------------------- ### Steps to reproduce: - Create a class with an `attr_accessor` for an instance variable - Create an instance method that reassign this variable using the current value stored in the variable - Show that the variable is set to nil during the evaluation Code snippet: ``` ruby # attr_accessor_nil.rb class A attr_accessor :a def initialize @a = 1 end def my_method puts "a is '#{a.inspect}' of class '#{a.class}'" a += 1 if a.positive? # use an integer method end end instance = A.new instance.my_method # output: # # a is '1' of class 'Integer' # attr_accessor_nil.rb:12:in `my_method': undefined method `positive?' for nil:NilClass (NoMethodError) # # a += 1 if a.positive? # use an integer method # ^^^^^^^^^^ # from attr_accessor_nil.rb:17:in `<main>' ``` ### Expected behavior `a += 1` should lead to `a` being equal to `1` at the end of the assignment, because `a` was storing `0` previously, as shown by the `puts`. Am I being wrong expecting this result? ### Actual behavior `a += 1` raises an error about `a` being `nil` in the evaluation. ### Further investigation I checked if it was coming from the "instance variable", or about the "attr_accessor" by running the following snippet: Code snippet: ```ruby # attr_accessor_nil.rb class A attr_accessor :a def initialize @a = 0 end def my_method puts "a is '#{a.inspect}' of class '#{a.class}'" @a += 1 # use the instance variable directly, instead of the accessor end end instance = A.new instance.my_method # output: # # a is '1' of class 'Integer' ``` This snippet runs just fine, and no error is raised. ### System configuration Ruby version : 3.2.2 -- https://bugs.ruby-lang.org/
2 3
0 0
  • ← Newer
  • 1
  • ...
  • 19
  • 20
  • 21
  • 22
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.