如题: 请实现一个方法得到两数相加结果,可用以下两种调用方式: sum(2,3)输出5 sum(2)(3)输出5 sum(2)(3)(4) 输出9
有疑问加站长微信联系(非本文作者)

如题: 请实现一个方法得到两数相加结果,可用以下两种调用方式: sum(2,3)输出5 sum(2)(3)输出5 sum(2)(3)(4) 输出9
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
`单行代码`
已经坐路边抽了半包烟了,惆怅,觉得自己什么都不会了
你确定没记错题?你说两种调用方式,却给出了 3 种~
返回函数?
没记错,面试官提示我闭包,函数原型应该是 func sum(x) 然后能以闭包方式调用比如 sum(x)(x)(x)(x)(x)(x)(x)(x)这样连续
在线等啊,亲们
确认第1个是 sum(2,3)?如果第1个是 sum(2) 这样的,我有答案
对的,这个题我决不可能记错
sum(2)(3)
5
sum(2,3)
5
我找到一个JavaScript实现方式,面试官说这在很多语言都是合法的调用形式。面试题也是golang的面试题,该不会是面试官没弄清楚吧
贴上来参考参考,这步过不去我怕是不写代码了
我在星球给了答案,这里也贴一下。
https://play.studygolang.com/p/mWp_zGyCLN9
太感谢了,已哭~
还有网友给了一种更有好的方式,支持更复杂的:
https://play.studygolang.com/p/KHD2SzdcPDU
星球是什么社区啊,我也去那边看看
见该文最后: https://studygolang.com/topics/8550
哈哈这个 题 不错
贴个java版本吧,味道好像不太一样
编辑 预览 ```php <?php $a=0; $s = function($v) use (&$a){ $a+=$v; }; $sum = function (...$nums) use ($s,&$sum){ foreach ($nums as $v) { $s($v); } return $sum; }; $sum(3,4)(3)(4)(3,1); echo $a; ``` 提交 取消
adventurer · #18 · 6年之前 最后说一下,闭包的关键点其实是“闭包函数的运行方向是由外向内的” 编辑 预览 ```php <?php $a=0; $s = function($v) use (&$a){ $a+=$v; }; $sum = function (...$nums) use ($s,&$sum){ foreach ($nums as $v) { $s($v); } return $sum; }; $sum(3,4)(3)(4)(3,1); echo $a; ``` 最后说一下,闭包的关键点其实是“闭包函数的运行方向是由外向内的” 提交 取消 chengruo · #19 · 6年之前 妙啊 编辑 预览 妙啊 提交 取消