В Яве нет значений по умолчанию для аргументов методов. То есть так нельзя:
public int method(int a, int b = 1, int c = 2) { return a + b + c; } |
Реализовывать это нужно через жопу перегрузку:
public int method(int a, int b, int c) { return a + b + c; } public int method(int a, int b) { return method(a, b, 2); } public int method(int a) { return method(a, 1); } |
Если подумать, то да, значениям по умолчанию может быть сложно ужиться в языке с такой вещью, как перегрузка методов. Однако, для большей уверенности полез в гугл → «java параметры по умолчанию». На достаточно большом количестве форумов задаётся вопрос, есть ли эти самые значения по умолчанию или нет. И да, действительно, их нет. Но что самое интересное, поголовно все отвечающие (в большинстве заслуженные дядьки) делают удивлённые o_O и спрашивают «а где такое вообще может понадобиться?».
Вот так вот, казалось бы очевидная и всем известная вещь. А вот и не очевидная и известная далеко не всем.
Может это типа GOTO? Мне тоже без GOTO плохо было поначалу, когда на PHP перешел…
adw0rd, 15.04.2009, 9:10
перегрузка это то что мне действительно не хватает в php!
например есть метод
function test($name = null, $sur_name =null, $age = null)
{
}
если отсутствуют последние два параметра то все красиво
test(‘вася’);
а если первые два,
test(null, null,25); — не очень прикольно
и в php из-за отсутствия перезагрузки приходится реализовывать ветвление(проверка на существования параметров) , что тоже красоты не предает, а только запутанность кода!
CyberSport, 16.04.2009, 18:16
Перегрузка в пыхе не пройдёт с его мягкой типизацией.
Передача же аргументов охуенно сделана в Питоне:
vasa_c, 16.04.2009, 19:52
# func(one = 3, four = 5); # Аналогично — func(3, 2, 3, 5)
А С++ случайно не так?
ThisBook, 21.06.2009, 3:30
Нет, не так.
Я не про определение функции, а именно про вызов с указанием имён аргументов.
vasa_c, 22.06.2009, 19:22
перегрузка — сила. пхп хуев изза ее отсутствия. дефолт значения функций — уг на самом деле … они делают код запутанным (ибо добавляется минимум 1 иф на каждое условие) и более длинным по строкам методы, что дает шанс на большее колво ошибок. ну и некрасиво когда и правда отсутствуют первые параметры, нулл передавать както неайсово :(
phpdude, 5.11.2009, 23:19
phpdude, это как раз за счет динамики, нахуй там перегрузка
phppoc, 5.11.2009, 23:27
phpdude, не понял о чём ты )
vasa_c, 6.11.2009, 18:12
phppoc, подробнее объясни?
vasa_c, ты на яве пописать успел? перегрузка методов — сила, а параметры по умолчанию — костыль как и все пхп))
phpdude, 6.11.2009, 19:12
Параметры по умолчанию, как минимум уже в Си были. И в слаботипизированном языке перегрузка, как в Яве не покатит никак.
>добавляется минимум 1 иф на каждое условие
не понял, где?
>и более длинным по строкам методы
не понял, опять )
vasa_c, 6.11.2009, 19:34
ответ на топик: http://pyha.ru/forum/topic/3575
$SOME_PREFIX_1 = «test1»;
$SOME_PREFIX_2 = «test2»;
$arr = get_defined_vars();
foreach($arr as $key => $value) {
if (strstr($key, ‘SOME_PREFIX_’)) {
echo(«переменная: $key — значение: $value\n»);
}
}
при желании SOME_PREFIX_ можно исключить.
при мусоре (для TC), если пихать в функцию поиск «ага-ага» — ничего не выдаст — можно обработать.
собственно ко всем нужным переменным можно добавить префикс в начале:
// исходные данные
$test_1 = «test1»;
$test_2 = «test2»;
$prefix = «SOME_PREFIX_»;
// где-то в коде — добавляем префикс для точного поиска
${$prefix.$test_1} = $test_1;
${$prefix.$test_2} = $test_2;
// поиск
$arr = get_defined_vars();
foreach($arr as $key => $value) {
if (strstr($key, ‘SOME_PREFIX_’)) {
echo(«переменная: $key — значение: $value\n»);
}
}
tserj, 16.03.2010, 2:26
Э-э. А почему для ответа на этот топик, вы выбрали не собственно этот топик, а запись про яву на совсем другом сайте?
vasa_c, 16.03.2010, 11:30
да он сука спамер! доставай пулемет, будем его ебошить =)
phpdude, 16.03.2010, 11:35
про «жопу» это точно помечено )))
msangel, 5.10.2010, 22:19
Тема старая, но вот я тоже начал интересоваться этим и вот вариант для чего это может понадобиться:
Курсовой у меня, надо задисасемблить некоторые блоки на разных языках, вот один из них и есть дефолтные значения параметров функций в Ява, но как оказывается их то и нет.
Сергей, 14.03.2012, 12:51