Project

General

Profile

Actions

Bug #10475

closed

Array#flatten should not accept a nil argument

Added by dubek (Dov Murik) about 10 years ago. Updated over 4 years ago.

Status:
Closed
Target version:
-
ruby -v:
ruby 2.1.4p265 (2014-10-27 revision 48166) [x86_64-linux]
[ruby-core:66076]
Tags:

Description

Currently Array#flatten accepts an explicit nil argument which has the same meaning as -1 (or no arguemnt) - meaning endless recursive flattening. I'd expect flatten to accept an integer argument only (or not at all, with a default of -1).

Moreover, the behaviour of arr.flatten(-1) is not described in the method's documentation.

Current behaviour (Ruby 2.1.4):

2.1.4 :001 > arr = [1, [2, [3, [4, 5]]]]
 => [1, [2, [3, [4, 5]]]] 
2.1.4 :002 > arr.flatten
 => [1, 2, 3, 4, 5] 
2.1.4 :003 > arr.flatten(-1)
 => [1, 2, 3, 4, 5] 
2.1.4 :004 > arr.flatten(nil)
 => [1, 2, 3, 4, 5] 

Expected behaviour:

  • The last call (arr.flatten(nil)) should raise ArgumentError exception.
  • The -1 (as "indefinite") should be documented.

Note that this suggestion will break applications/gems that rely on the fact that arr.flatten(nil) is identical to arr.flatten.

I'd like to hear your opinions on this. If accepted, I'm willing to try and write a patch.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0