Вы можете использовать остальные параметры . Синтаксис:
const hello = (...args) => {
// args is now an array
console.log(args)
}
Затем вы можете использовать его следующим образом:
hello('This ', 'is ', 'an ', 'example') // outputs ['This ', 'is ', 'an ', 'example']
Вы можете передать в него любое количество аргументов.
Итак, вернемся к вашему примеру, у вас может быть что-то вроде
const example = (...targets) => {
return {
target: targets,
endpoint: null,
tick: 500,
verbose: true,
once: false,
}
}
module.exports = example
И вы можете использовать его примерно так
const example = require('./example')
let val = example('google', 'twitter', 'yahoo')
console.log(val)
Параметр rest должен быть последним твоя функция. Поэтому, если вы хотите передать некоторые другие параметры, синтаксис будет
function hello(param, ...rest) {
// rest is an array
...
}
Вы также можете напрямую передать массив или переменную, ссылающуюся на массив:
function hello(param) {
...
console.log(param)
}
hello(["hello", "world"]) // outputs ["hello", "world"]
or
var arr = ["hello", "world"]
hello(arr)
Вы также можете прочитать больше о Array-подобных объектных аргументах здесь
Windows cmd.exe
не использует '
как представляют разделители в виде строки, только "
. То, что Вы делаете, эквивалентно:
perl -p -i.bak -e "'s/log/log,XYZ/g'" config.txt
так -w
жалуется, что "Вы дали мне строку, но она ничего не делает".
Решение состоит в том, чтобы использовать двойные кавычки вместо этого:
perl -p -i.bak -e "s/log/log,XYZ/g" config.txt
или просто оставлять их, с тех пор нет никаких метасимволов в этой команде, которая была бы интерпретирована cmd.exe
.
cmd.exe
просто действительно неприятный зверь, для кого-либо приученного к sh
- как оболочки. Вот несколько других общих отказов и обходных решений относительно perl
вызов.
@REM doesn't work: perl -e"print" @REM works: perl -e "print" @REM doesn't work: perl -e "print \"Hello, world!\n\"" @REM works: perl -e "print qq(Hello, world!\n)"
ответ ephemient суммирует проблему хорошо, но у Вас действительно есть другая опция: измените свою оболочку от cmd.exe
к лучшей оболочке. Если бы Вы - человек типа Unix затем, я предложил бы изучить Cygwin, который обеспечивает вид среды, Вы привыкли к (например, утилиты Bash и GNU).
Если бы Вы - человек типа Windows, я предложил бы смотреть на PowerShell (урожденный MSH урожденная Монада). На самом деле я предложил бы изучить PowerShell, даже если Вы - человек типа Unix. Это интегрируется с.NET и имеет много аккуратных функций (как объекты, передаваемые через каналы, а не простые строки текста). Если бы я застрял на Microsoft OS, это - оболочка, которую я использовал бы.
Другие оболочки для Windows, который люди, кажется, любят: