Feature #7432

Explicit way to define local variable in scope

Added by Ilya Vorontsov over 1 year ago. Updated over 1 year ago.

[ruby-core:50070]
Status:Rejected
Priority:Low
Assignee:Yukihiro Matsumoto
Category:-
Target version:Next Major

Description

Imagine code such as this
def testsmth
result = nil
assert
nothingraised { result = someslowcalculation }
assert
equal expected_answer, result
end
Line result = nil means nothing more than our intention to simply bind variable result in scope of assertion block with outer local variable. In large methods it can be much heavier to find out this obscured intention.
It may be better to introduce a method (if it can be implemented) or a keyword which simply creates a local variable (probably with nil value just to mark its existence)

definevariable 'x' or (definevariable x if it's a keyword)

History

#1 Updated by Charlie Somerville over 1 year ago

This should definitely not be a method, however I would welcome a 'local' keyword for this purpose.

#2 Updated by Yusuke Endoh over 1 year ago

  • Status changed from Open to Assigned
  • Assignee set to Yukihiro Matsumoto
  • Priority changed from Normal to Low
  • Target version set to Next Major

Assigning to matz, but don't hold your breath; matz has rejected such a explicit variable declaration syntax many times.

Yusuke Endoh mame@tsg.ne.jp

#3 Updated by Thomas Sawyer over 1 year ago

I have always been curious why there is no dynamic way to create local variables (other then eval).

Eg. x = 10 might be dynamically written:

local :x, 10

Since we can create just about anything else dynamically, it seems like stark omission.

#4 Updated by Yukihiro Matsumoto over 1 year ago

  • Status changed from Assigned to Rejected

Since I am sick of 'var' and 'local' in other languages, I don't want to add explicit local variable declaration, that requires a new keyword. Introducing a new keyword may break existing programs.

@trans Your idea would eliminate many chances to optimize.

Matz.

#5 Updated by Thomas Sawyer over 1 year ago

I see why then. Thanks.

Also available in: Atom PDF