[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вызов function(a)(d)
howard
Возможен ли такой вызов функции f(a)(d), что бы например, она суммировала a и d?
sergeiss
f( a, d) ???

Ты это имел ввиду?

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
howard
Нет, прислали задание:
Написать функцию f, которая будет возвращать сумму чисел a и d.
Вызываться при этом должна следующим способом:f(a)(d).
Например, f(2)(2) --> 4

Вот и ломаю голову, можно ли такое осуществить
bestxp
Конечно очень даже легко)
Invis1ble
надо возвращать функцию из f()
гугли каррирование

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

sergeiss
Цитата (Invis1ble @ 10.07.2014 - 19:39)
гугли каррирование

Во люди слова умные знают smile.gif

howard, в Википедии даже образец есть для ПХП. Похоже, именно "твой" случай. Поэтому ссылку не дам, поищи, сам сделай хоть что-то для решения задачи.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
howard
Да, спасибо, не знал о такой концепции. bestxp - отдельная благодарность.
howard
function curry($callback, $args = array()){
$ret = function() use($callback, $args){
$num = func_num_args($callback);
$args = array_merge($args, func_get_args());
if(count($args) >= $num){
return call_user_func_array($callback, $args);
} else {
return curry($callback, $args);
}
}
;

return $ret;
}
function add($a, $b) { return $a + $b; }
$add = curry("add");

echo $add(2)(5); // Тут ошибка


Как все-таки добиться такой записи?
sergeiss
Ну так вот же ж! http://ru.wikipedia.org/wiki/Каррирование Там и примеры есть, в т.ч. под ПХП. Именно сложение. Тебе даже писать не надо, только скопипастить и разобрать, как работает.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
howard
Видел я тот пример, но сделать в php запись вида curry(1)(2) - не выйдет
vital
Цитата (howard @ 10.07.2014 - 19:59)
Видел я тот пример, но сделать в php запись вида curry(1)(2) - не выйдет

Смотря в какой версии пхп.

_____________
"Нужно быть готовым прислушиваться к тем, кто может тебя чему-нибудь научить. Иначе ты никогда не вырастешь."

Откровенно я никому ниразу не нагрубил. А дать подзатыльник зарвавшемуся юнцу, так это и ему на пользу, и мне в удовольствие. © AllesKlar
howard
Пробовал на 5.3,5.4,5.5
Invis1ble
именно f($a)($b) в php на данный момент синтаксически неверно.
можно через переменную только.
может в задании имелся в виду другой язык? на js, например, должно работать нормально.
если именно php, то ответ: "нет, не возможен" smile.gif

_____________

Профессиональная разработка на заказ

Я на GitHub | второй профиль

twin
Цитата (vital @ 10.07.2014 - 18:12)
Цитата (howard @ 10.07.2014 - 19:59)
Видел я тот пример, но сделать в php запись вида curry(1)(2) - не выйдет

Смотря в какой версии пхп.

Ты наверное путаешь с такой формой
curry(1)[2]


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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
vital
Цитата (twin @ 11.07.2014 - 04:58)
Цитата (vital @ 10.07.2014 - 18:12)
Цитата (howard @ 10.07.2014 - 19:59)
Видел я тот пример, но сделать в php запись вида curry(1)(2) - не выйдет

Смотря в какой версии пхп.

Ты наверное путаешь с такой формой
curry(1)[2]

Пхп только массивы и классы из возврата раскрывает?
Функции не научили?
Даже если вернуть че-нить типа
return $$rtn='func2';?

Опять недоделали фичу в языке, ну все как всегда в этом пхп:)

_____________
"Нужно быть готовым прислушиваться к тем, кто может тебя чему-нибудь научить. Иначе ты никогда не вырастешь."

Откровенно я никому ниразу не нагрубил. А дать подзатыльник зарвавшемуся юнцу, так это и ему на пользу, и мне в удовольствие. © AllesKlar
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.