2016-06-23 2 views
1

В Coffeescript, что лучший способ создать функцию с обязательными параметрами? На данный момент, я делаю это:Каков наилучший способ сделать параметр функции обязательным?

myFunction: (requiredParam, optionalParam) -> 
    unless requiredParam? then throw new Error ... 
    ... 

Если у меня есть, скажем, 5 параметров или даже больше, это занимает довольно много времени и пространства, чтобы бросить ошибку для каждого параметра.

Есть ли более простой или более лаконичный способ сделать это?

ответ

2

Вы можете использовать переменную arguments внутри любой функции, чтобы количество фактических аргументов не было меньше числа требуемых аргументов.

myFunction: (required1, required2, required3, optional1, optional2) -> 
    throw new Error("Given #{arguments.length} out of 3 required.") if arguments.length < 3 
    # ... 
+0

О, спасибо! Я должен был подумать. – Zac

+0

Но еще одна вещь, если бы я хотел, чтобы один из аргументов имел определенный тип, мог бы быть простой способ сделать это? – Zac

+0

Затем вы должны проверить тип в следующей строке, здесь нет магии. Или вы можете попробовать [TypeScript] (http://www.typescriptlang.org/). – fracz