gpt4 book ai didi

coffeescript - 下划线在 Coffeescript 的控制台中不起作用

转载 作者:行者123 更新时间:2023-12-04 01:45:04 24 4
gpt4 key购买 nike

我刚刚开始使用 Coffeescript 和 Coffeescript 控制台以及 Underscore。然而,每当我定义一个函数时,Coffeescript 都会决定 _表示那个函数,似乎忘记了 _ = require 'underscore' 的初始赋值.

为什么会发生这种情况?我该如何预防?
(我真的很希望能够将我的文件中的粘贴代码复制到控制台中。)

(_ 在 Coffeescript 控制台中有什么特殊含义吗?它的意思是“最后的结果”还是什么?那可以解释我的问题吗?)

细节:

$ coffee 
coffee> _.contains [1, 2, 3], 3 # no Underscore, initially
TypeError: Cannot call method 'contains' of undefined
at ...
coffee>
coffee> _ = require 'underscore'
{ [Function]
_: [Circular],
VERSION: '1.3.3',
forEach: [Function],
...

coffee> _.contains [1, 2, 3], 3 # now Underscore works fine
true
coffee>
------> someFunction = (a, b) -> # define a function ...
......> a + b

[Function]
coffee>
coffee> _.contains [1, 2, 3], 3 # now `_` is not Underscore any more!
TypeError: Object function (a, b) { # Does `_` mean "last result" or sth?
return a + b;
} has no method 'contains'
at evalmachine.<anonymous>:3:7
at Object.eval (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/coffee-script.js:142:17)
at Interface.<anonymous> (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/repl.js:131:40)
at Interface.emit (events.js:67:17)
at Interface._onLine (readline.js:162:10)
at Interface._line (readline.js:426:8)
at Interface._ttyWrite (readline.js:603:14)
at ReadStream.<anonymous> (readline.js:82:12)
at ReadStream.emit (events.js:88:20)
at ReadStream._emitKey (tty.js:327:10)
coffee>
coffee> _ = require 'underscore'
coffee> _.contains [1, 2, 3], 3 # Now all is fine again, for a short while
true

最佳答案

CoffeeScript REPL 有 this JavaScript其核心:

try {
_ = global._;
returnValue = CoffeeScript["eval"]("_=(" + code + "\n)", {
filename: 'repl',
modulename: 'repl'
});
if (returnValue === void 0) {
global._ = _;
}
repl.output.write("" + (inspect(returnValue, false, 2, enableColours)) + "\n");
} catch (err) {
error(err);
}

所以如果最后一个命令返回了一些东西,那么 _会是那种东西。虽然我找不到任何关于此的文档,但正在搜索 _不是一项非常富有成效的事件。如果您想在 CoffeeScript REPL 中使用 Underscore.js,您必须将其命名为 _ 以外的其他名称。 .

感谢 Trevor Burnham (谁写了 the book 所以我认为我们可以信任他)我们知道 CoffeeScript REPL 使用 _作为匹配 node.js REPL 行为的最后一个结果:

REPL Features
[...]
The special variable _ (underscore) contains the result of the last expression.



ruby 的 irb做同样的事情。

关于coffeescript - 下划线在 Coffeescript 的控制台中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10973968/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com