coffeescript将参数传递给返回的函数

coffeescript将参数传递给返回的函数,coffeescript,method-chaining,Coffeescript,Method Chaining,我不确定是否有一个JavaScript术语来描述我在CoffeeScript中要实现的目标,但下面是一个用例: 我正在用CommonJS加载JS模块,它们可能会加载对象、函数或任何东西。 例如,如果我加载了一个对象文本,我可以在线访问它的属性,链接在require()调用之后 //car.js返回一个对象属性和方法 var make=需要(“汽车”)。make 这在CoffeeScript中也是可能的,因为他们引入了方法链接: make=需要“汽车” 制作 但是 在JS中,如果require

我不确定是否有一个JavaScript术语来描述我在CoffeeScript中要实现的目标,但下面是一个用例:

我正在用CommonJS加载JS模块,它们可能会加载对象、函数或任何东西。 例如,如果我加载了一个对象文本,我可以在线访问它的属性,链接在require()调用之后

//car.js返回一个对象属性和方法
var make=需要(“汽车”)。make
这在CoffeeScript中也是可能的,因为他们引入了方法链接:

make=需要“汽车”
制作
但是

在JS中,如果
require()
'd文件返回一个函数,我可以在线调用它:

//drive.js
module.exports=功能(距离、速度){
返回距离/速度;
}
//index.js
var小时数=需要('drive')(1200、120);//10
以下尝试会导致错误:

//drive.coffee
module.exports=(距离、速度)->
距离/速度
//咖啡
小时数=需要“驱动器”1200、120//错误意外数字
小时数=需要“驾驶”
1200,120//错误-意外缩进
小时数=需要“驱动器”(1200,120)//意外错误(

我该怎么做是CoffeeScript?

答案是括号

// drive.coffee
module.exports = (distance, speed) ->
  distance / speed

// index.coffee
driveFunction = require('drive')
hours = driveFunction(1200, 120)
或更短

hours = require('drive')(1200, 120)

你仍然可以做
hours=require('drive')(1200,120)
严肃地说,coffeescript的一个主张是提高可读性。
require'drive'1200,120
如何比
require('drive')(1200,120)
更具可读性?(事实并非如此,幸运的是它也错了。)首先,这在一定程度上是为了更好地理解CS语法。其次,我确实认为
需要'drive'(1200,120)
,例如,是非常可读和直观的,但是为什么你希望
fx(y)
f(x)(y)
而不是
f(x(y))
?或者,如果CoffeeScript知道它使用的是字符串文字,您是否希望它有特殊的行为?我不希望如此-这就是为什么我想知道这些动态回调是否有另一种特殊形式的语法,比如新的方法链接syntaxwell,这几乎是JavaScript语法…我试图理解如果没有这里有一些CS语法可以编译成这样。