解释在 CoffeeScript 中使用带有尾参数的 splats
CoffeeScript 是一种编译成 JavaScript 的轻量级语言。它提供了简单易学的语法,避免了 JavaScript 的复杂语法。 CoffeeScript 受到 JavaScript、Ruby、YAML、Haskell、Perl、 Python的影响,并影响了 MoonScript、LiveScript 和 JavaScript。
CoffeeScript 的安装:
在本地安装项目,使用以下命令:
npm install --save-dev coffeescript
要全局安装以在任何地方执行 .coffee 文件,请使用以下命令:
npm install --global coffeescript
当您不知道传递给函数调用的参数数量以及函数将接受多少参数时,我们会在 CoffeeScript 中使用 splats。在其他编程语言中,此功能被称为或命名为可变长度参数。
带有 splat 的参数允许我们使用未定义数量的参数。所以每当你想用不同数量的参数调用你的函数时,只需使用 splats。
在使用带有拖尾参数的 splats 之前,我们将简要介绍一下 splats。
句法:
function_name = (parameter1, parameter2, parameter3...) ->
var_name : parameter1
var_name : parameter2
function_name("argument1", "argument2","argument3", "argument4")
示例 1:没有拖尾
Javascript
school = (first, second, third...) ->
std1 : first
std2 : second
std3 : third
console.log"#4 names"
console.log(school("akash", "manoj","devendra", "geeks"))
console.log"#5 names"
console.log(school "ajay", "atul", "vishal", "madhur", "yash")
Javascript
school = (first, second, third..., last) ->
secondary:
std1 : first
std2 : second
std3 : third
highersecondary:
std4 : last
console.log"argument with tailing "
console.log(school("chaitanya", "aditya",
"swarop", "gaurav", "rupesh", "tanay"))
输出:
[ '#4 names' ]
{ std1: 'akash', std2: 'manoj', std3: [ 'devendra', 'geeks' ] }
[ '#5 names' ]
{ std1: 'ajay', std2: 'atul', std3: [ 'vishal', 'madhur', 'yash' ] }
在上面的示例中,函数调用接收四个参数,而函数体只有三个参数,因此前三个参数将存储在前三个参数中,其余变量类型参数将与前一个参数一起存储在第三个变量中作为一个列表。
现在让我们看看带有拖尾参数的 splat。
句法:
function_name = (parameter1, parameter2,
parameter3..., parameterlast) ->
block1:
var_name1: parameter1
var_name2 : parameter2
block2:
var_namelast = parameterlast
function_name("argument1", "argument2",
"argument3", "argument4",argument5)
示例 2:带有尾随
Javascript
school = (first, second, third..., last) ->
secondary:
std1 : first
std2 : second
std3 : third
highersecondary:
std4 : last
console.log"argument with tailing "
console.log(school("chaitanya", "aditya",
"swarop", "gaurav", "rupesh", "tanay"))
输出:
[ 'argument with tailing ' ]
{
secondary: {
std1: 'chaitanya',
std2: 'aditya',
std3: [ 'swarop', 'gaurav', 'rupesh' ]
},
highersecondary: { std4: 'tanay' }
}
在上面的示例中,通过在一个函数的参数中添加一个省略号 (...),CoffeeScript 会将所有未被其他命名参数捕获的参数值组合到一个列表中。即使未提供某些命名参数,它也会提供一个空列表。
参考: https://coffeescript-cookbook.github.io/chapters/functions/splat_arguments