var baseNth = require('./_baseNth'),
    rest = require('./rest'),
    toInteger = require('./toInteger');

/**
 * Creates a function that returns its nth argument. If `n` is negative,
 * the nth argument from the end is returned.
 *
 * @static
 * @memberOf _
 * @since 4.0.0
 * @category Util
 * @param {number} [n=0] The index of the argument to return.
 * @returns {Function} Returns the new function.
 * @example
 *
 * var func = _.nthArg(1);
 * func('a', 'b', 'c', 'd');
 * // => 'b'
 *
 * var func = _.nthArg(-2);
 * func('a', 'b', 'c', 'd');
 * // => 'c'
 */
function nthArg(n) {
  n = toInteger(n);
  return rest(function(args) {
    return baseNth(args, n);
  });
}

module.exports = nthArg;
