Project

General

Profile

Actions

Misc #15265

closed

Documentation for `Object#instance_variable_set` is inaccurate and pejorative

Added by CaryInVictoria (Cary Swoveland) about 6 years ago. Updated over 4 years ago.

Status:
Closed
Assignee:
-
[ruby-core:89594]

Description

The v2.5.1 documentation for this method states, in part, "Sets the instance variable named by symbol to the given object, thereby frustrating the efforts of the class's author to attempt to provide proper encapsulation." The phrase beginning, "thereby..." is not necessarily true and seems to mock the fact that the method has been provided to us for its use. Suppose, for example, that the author has provided getters and setters for all of an object's instance variables, so there is no encapsulation issue. There still may be situations where this method (and Object#instance_variable_get) could be used to advantage. One is where we want to perform certain operations on all instances variables. Where it is possible to write, <instance>.instance_variables.each { |v| f(v) }, this has several advantages over manipulating the instance variables individually: it requires less code, debugging and testing is simpler, there is less chance of introducing a bug; and adding, removing or renaming instance variables may not require f(v) to be changed.


Related issues 1 (0 open1 closed)

Related to Ruby master - Misc #15748: [Documentation] Suggestion to adjust Object.html#method-i-instance_variable_setClosedActions
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0