Creating a Ruby method that pads an Array

Posted by CJ Johnson on Stack Overflow See other posts from Stack Overflow or by CJ Johnson
Published on 2014-08-18T20:52:55Z Indexed on 2014/08/18 22:20 UTC
Read the original article Hit count: 255

Filed under:
|
|

I'm working on creating a method that pads an array, and accepts 1. a desired value and 2. an optional string/integer value. Desired_size reflects the desired number of elements in the array. If a string/integer is passed in as the second value, this value is used to pad the array with extra elements. I understand there is a 'fill' method that can shortcut this - but that would be cheating for the homework I'm doing.

The issue: no matter what I do, only the original array is returned. I started here:

class Array
  def pad(desired_size, value = nil)

    desired_size >= self.length ? return self : (desired_size - self.length).times.do { |x| self << value }

  end
end

test_array = [1, 2, 3]
test_array.pad(5)

From what I researched the issue seemed to be around trying to alter self's array, so I learned about .inject and gave that a whirl:

class Array
  def pad(desired_size, value = nil)

    if desired_size >= self.length
      return self 
    else 
      (desired_size - self.length).times.inject { |array, x| array << value }
    return array
    end
  end
end
test_array = [1, 2, 3]
test_array.pad(5)

The interwebs tell me the problem might be with any reference to self so I wiped that out altogether:

class Array
  def pad(desired_size, value = nil)
    array = []
    self.each { |x| array << x }
    if desired_size >= array.length
      return array 
    else 
      (desired_size - array.length).times.inject { |array, x| array << value }
    return array
    end
  end
end
test_array = [1, 2, 3]
test_array.pad(5)

I'm very new to classes and still trying to learn about them. Maybe I'm not even testing them the right way with my test_array? Otherwise, I think the issue is I get the method to recognize the desired_size value that's being passed in. I don't know where to go next. Any advice would be appreciated.

Thanks in advance for your time.

© Stack Overflow or respective owner

Related posts about ruby

Related posts about arrays