def column(index)
      index_unknown = index.is_a?(Integer) && (index >= columns_size || index < 0)
      if block_given?
        return self if index_unknown
        rows.map { |row| yield row[index] }
      else
        return nil if index_unknown
        rows.map { |row| row[index] }.compact
      end
    end
def column(index)
      index_unknown = index.is_a?(Integer) && (index >= columns_size || index < 0)
      if block_given?
        return self if index_unknown
        rows.map { |row| yield row[index] }
      else
        return nil if index_unknown
        rows.map { |row| row[index] }.compact
      end
    end
Return a column number at the index of the table as an Array.
 If the table has a header then column can be searched by header name.
 When a block is given, the elements of that Array are iterated over.

 @example
   header = [:h1, :h2]
   rows  = [ ['a1', 'a2'], ['b1', 'b2'] ]
   table = TTY::Table.new :rows => rows, :header => header
   table.column(1)
   table.column(1)   { |element| ... }
   table.column(:h1)
   table.column(:h1) { |element| ... }

 @param [Integer, String, Symbol] index

 @yield []
   optional block to execute in the iteration operation

 @return [self]

 @api public