什么是可变函数?

时间:2017-02-05 01:24:56

标签: function eslint

刚刚在eslint docs中看到了变量函数的提及。什么是?

1 个答案:

答案 0 :(得分:0)

可变参数函数是采用可变数量参数的函数。 例如,c中的printf,或者您可以用多种语言定义自己的此类函数。在java ...中用于定义函数的变量参数。同样在c中也使用相同的东西。

void simple_printf(const char* fmt...){
va_list args;
va_start(args, fmt);

while (*fmt != '\0') {
    if (*fmt == 'd') {
        int i = va_arg(args, int);
        std::cout << i << '\n';
    } else if (*fmt == 'c') {
        // note automatic conversion to integral type
        int c = va_arg(args, int);
        std::cout << static_cast<char>(c) << '\n';
    } else if (*fmt == 'f') {
        double d = va_arg(args, double);
        std::cout << d << '\n';
    }
    ++fmt;
}

va_end(args);

}

这是c中的可变函数。

在你问过的链接中,据说要在新的更新之前在ESLint中调用这些函数,必须使用.apply(),但是从新的更新中你可以简单地忽略它,只需在传递参数之前添加...如链接那样。

之前:

var args = [1, 2, 3, 4]; Math.max.apply(Math, args);

现在:

var args = [1, 2, 3, 4]; Math.max(...args);

现在你不需要使用.apply()