使用下划线,我想创建一个 partial function对于 parseInt
,以便与 map
一起使用时基数始终为 10。
我希望下面的方法起作用,但它不起作用:
var parseInt10 = _.partial(parseInt, _, 10);
docs似乎说可以使用 _
作为占位符来跳过稍后在 _.partial
中指定的参数:
_.partial(function, *arguments)
Partially apply a function by filling in any number of its arguments, without changing its dynamic this value. A close cousin of bind. You may pass _ in your list of arguments to specify an argument that should not be pre-filled, but left open to supply at call-time.
测试
_.map([_, '_', undefined, null], function(x) { return _.partial(function(){ return arguments }, x, 10)('123'); })
使用 _.partial(function(){ return arguments }, x, 10)('123')
并将 x
替换为 _
, "_"
, undefined
, null
,我发现所有这些值都按预期直接传递了。我的印象是传递 _
意味着它不会被直接使用。
注意
我很清楚我可以做这样的事情:
var parseInt10 = function(n) { return parseInt(n, 10); };
但是,underscore 的文档似乎暗示可以使用 _.partial
这一事实让我想知道我做错了什么。
那么,我是不是对下划线文档的解释有误,还是没有处理跳过参数的特殊值?
最佳答案
我刚刚决定检查 source code它似乎是 _.partial
was added 的占位符功能recently .在下划线文档页面上使用 JS 控制台,它成功了!
var parseInt10 = _.partial(parseInt, _, 10);
我想我只是需要升级到最新版本。
(对于所有编写 future 文档的人来说,使用类似于 jQuery 或 Django 文档的版本号内联更改注释会很好,或者至少使所呈现的版本更加显眼)
关于javascript - 如何使用下划线 _ 为 parseInt() 创建部分函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22161328/