Сообщение от B@rmaley.e><e
|
Этого я и добивался. Что в C, что в php значения по-умолчанию задаются вне тела функции.
|
нет, я говорил "вне функции". С таким подходом надо создать обертку для каждой функции и использовать функцию только через нее (чтобы не дублировать значения по умолчанию):
function f(a, b){alert(this); return a + b}
function fWrapper(){
return lambda(f, 'Hello, world!', {a: 50, b: 77, c: 42});
}
к тому же lambda навязывает задание контекста, т.е. контекст для методов надо либо жестко прописывать в обертке (но тогда нельзя будет вызвать метод в другом контексте), либо указывать при каждом вызове
Сообщение от B@rmaley.e><e
|
Целью было обеспечение гарантированной установки значения по-умолчанию, т.е. так, чтобы уже на входе в функцию мы имели дело либо с настоящими значениями, либо стандартными.
|
ну вот я и говорю, что вы пытаетесь изменить язык. Такие вещи вызывают много проблем, и для этого нужны веские причины. А для надежности нужно тестировать код
Сообщение от B@rmaley.e><e
|
а во-вторых, что помешает Вам написать какой-нибудь код, оперирующий с arr, до проверки?
|
а что помешает сделать ошибку или опечатку в другом месте? Например, вызвать функцию с другими значениями по умолчанию или забыть воспользоваться оберткой
Сообщение от melky
|
правда, очень жаль, что изза такой типизации в JS нельзя использовать оверлоадинг ( перегрузки )
приходится внутри всей функции проверять тип аргумента и только потом расфасовывать методы
|
во-первых
не жалко, во-вторых, можешь привести конкретный пример, где по-твоему нужна перегрузка?