Lua中Underscore.lua模块的用途是什么?

时间:2017-01-02 14:17:14

标签: lua

在某些源代码中,我看到了“Underscore.lua”模块的用法。

"defaults": {
    .....
    "styleExt": "sass"
}

说明如下:

  

_ = require 'underscore' 是一个提供一组实用程序的Lua库   用于处理迭代器,数组,表和函数的函数。   这是api和文档受Underscore.lua的启发。   在Lua中使用下划线字符来丢弃变量是惯用的,所以你可以简单地将它分配给另一个变量名...

文档中提供的示例对我来说有点混乱。例如,以下操作的目的是什么?

Underscore.js

很明显,这个模块为迭代器,数组等提供了一些函数。但是当你可以使用比下划线更明显的任何其他字符时,为什么要使用_ = require 'underscore' _.each({1,2,3}, print) 1 1 { 1 : 1 2 : 2 3 : 3 } 2 2 { 1 : 1 2 : 2 3 : 3 } 3 3 { 1 : 1 2 : 2 3 : 3 } ?特别是当许多编辑不突出它时,阅读起来非常麻烦。我不太明白什么是大惊小怪。

2 个答案:

答案 0 :(得分:4)

  

但是当你可以使用比下划线更明显的任何其他角色时,为什么要使用_?

*啊哈*:

  

深受Underscore.js的启发

因为那是Underscore.js使用的。

我宁愿怀疑下划线字符是精确地选择因为它不是非常明显。这些实用程序的重点在于您可以在任何地方使用它们,它们是您对数据结构进行基本操作所需的日常工作。

因此,它们应该是该语言中可用的标准函数,访问它们所需的语法最少。但是你不能只将它们转储到全局表/ namespace / etc;这可能与现有代码冲突。所以你给他们访问它们所需的绝对最小语法。

答案 1 :(得分:3)

如果您使用

your_favorite_variable = require 'underscore'

你可以使用

your_favorite_variable.each({1,2,3}, print)

但是下划线(除了它与库和引用的javascript库具有相同的名称)有几个优点:

  • 轻松快速打字。因此,在您需要时可以轻松访问
  • 不可见。如果您想将其视为“标准”库
  • 的一部分,则不希望将其显示

这是很常见的方法。类似用于Javascript中的jQuery,它以同样的方式滥用$