Я не уверен, что это лучший способ, но я нашел следующий метод для работы (частично основанный на ответах выше):
1) Загрузите пакет .tar
2) Переместите пакет в каталог с вашими пользовательскими R-библиотеками (например, в моем случае это было «C: /Users/yourUserName/Documents/R/win-library/3.3»)
3) В Rstudio (или где-то еще, возможно), запустите команду ... install.packages("packageName.tar", repos=NULL, type="source")
Это работало для меня как минимум. Надеюсь, это полезно!
Лучший способ сделать перегрузку функции с параметрами не состоит в том, чтобы проверить длину аргумента или типы; проверка типов просто сделает Ваш код медленным, и у Вас есть забава Массивов, аннулирует, Объекты, и т.д.
, Что делает большинство разработчиков лавировать на объекте как последний аргумент их методам. Этот объект может содержать что-либо.
function foo(a, b, opts) {
// ...
if (opts['test']) { } //if test param exists, do something..
}
foo(1, 2, {"method":"add"});
foo(3, 4, {"test":"equals", "bar":"tree"});
Тогда можно обработать его так или иначе, Вы хотите в своем методе. [Переключатель, если еще, и т.д.]
Нет никакой реальной перегрузки функции в JavaScript, так как он позволяет передавать любое количество параметров любого типа. Необходимо проверить в функции, сколько были переданы аргументы и что вводит, они.
Существует два способа, которыми Вы могли приблизиться к этому лучше:
Передача словарь (ассоциативный массив), если Вы хотите оставить большую гибкость
, Берет объект в качестве аргумента и использует основанное на прототипе наследование для добавления гибкости.
Лучший способ действительно зависит от функции и аргументов. Каждая из Ваших опций является хорошей идеей в различных ситуациях. Я обычно пробую их в следующем порядке до одного из них работы:
Используя дополнительные аргументы как y = y || 'значение по умолчанию'. Это удобно, если бы можно сделать это, но это не может всегда работать практически, например, когда 0/null/undefined был бы допустимым аргументом.
Используя количество аргументов. Подобный последней опции, но может работать, когда № 1 не работает.
типы Проверки аргументов. Это может работать в некоторых случаях, где количество аргументов является тем же. Если Вы не можете надежно определить типы, Вы, возможно, должны использовать различные имена.
Используя различные имена во-первых. Вы, возможно, должны сделать это, если другие опции не будут работать, не практичны, или для непротиворечивости с другими связанными функциями.
Можно использовать этот метод
function func1(a, b, c) {
console.log(arguments[0]);
// expected output: 1
console.log(arguments[1]);
// expected output: 2
console.log(arguments[2]);
// expected output: 3
}
func1(1, 2, 3);
касательно: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments