JS能力测评27:使用 apply 调用函数

因为arguments并非真正的数组,因此要获得callIt的第一个参数之后的所有参数,不能直接使用slice方法截取,需要先将arguments转换为真正的数组才行。有两种常见的方法,一是使用slice方法:var args = Array . prototype . slice . call ( arguments );二是循环遍历逐一填入新数组。在获得了args之后,就可以调用apply来执行传入的函数参数。 

 

function callIt(fn) {
    //将arguments转化为数组后,截取第一个元素之后的所有元素
    var args = Array.prototype.slice.call(arguments,1);
    //调用fn
    var result = fn.apply(null,args);
    return result;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是一个可能的 C++ 实现: ```cpp #include <iostream> #include <algorithm> #include <sstream> std::string reverse(std::string s) { std::reverse(s.begin(), s.end()); return s; } std::string to_binary(int n) { std::stringstream ss; while (n > 0) { ss << n % 2; n /= 2; } return reverse(ss.str()); } std::string to_octal(int n) { std::stringstream ss; while (n > 0) { ss << n % 8; n /= 8; } return reverse(ss.str()); } std::string to_hexadecimal(int n) { std::stringstream ss; while (n > 0) { int digit = n % 16; if (digit < 10) { ss << digit; } else { ss << char('A' + digit - 10); } n /= 16; } return reverse(ss.str()); } int main() { int n; std::cin >> n; std::cout << reverse(to_binary(n)) << ' '; std::cout << reverse(to_octal(n)) << ' '; std::cout << reverse(to_hexadecimal(n)) << '\n'; return 0; } ``` 首先,我们定义了一个 `reverse` 函数,用于将字符串逆序。这个函数在后面的输出中被多次使用。 然后,我们分别实现了三个转换函数 `to_binary`、`to_octal` 和 `to_hexadecimal`。这些函数使用了一个 `stringstream` 对象来构造转换后的字符串。对于二进制和八进制,我们采用和上一个例题相同的方法,除以 2 或者 8 取余,然后将余数添加到字符串中。对于十六进制,我们需要特判一下余数,如果是小于 10 的数字,直接添加到字符串中;否则,需要将其转换成 A~F 中的一个字符。 最后,在 `main` 函数中,我们读入一个整数,然后分别调用三个转换函数,将结果逆序输出。注意,每个转换结果之间需要加上一个空格。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值