All streams
Search
Write a publication
Pull to refresh
111
0
B@rmaley.e⪥e @barmaley_exe

Уверенный пользователь ПК

Send message
Зачем чекбоксы?
Согласно Вашим утверждениям, из возможности создания проекта на C++, где все функции принимают произвольное количество аргументов, следует, что произвольное количество аргументов для любой функции не является причиной отсутствия перегрузки функций в php:
В таком случае с Вас пример, в котором функция принимает произвольное количество аргументов и может быть перегружена по количеству аргументов.

Касаемо специального синтаксиса: если Вы не укажете ..., то функция перестанет принимать произвольное число аргументов и Вы сможете перегрузить ее по количеству аргументов. А в php Вы не сможете заставить функцию принимать точное количество аргументов — ни большее, ни меньшее.
То есть в C++ Вы можете объявить функцию, которую можно будет перегрузить. В php Вы не можете жестко ограничить количество принимаемых аргументов (Возможность проверки внутри функции — это уже другое) => не можете перегрузить эту функцию по количеству аргументов.
Итого: так как в php все функции принимают произвольное количество аргументов, то, соответственно, эти функции нельзя перегрузить по количеству аргументов.
Ну вот, я попытался прочитать всю ветку и выделить наиболее важные моменты. Но что-то я так и не понял, что Вы имеете в виду. ЧЯДНТ?
firexel спросил, почему перегрузки нет в php.

theRavel указал ему 2 причины.

barmaley_exe (То есть я) сказал, что необязательные параметры есть и в плюсах, где перегрузка есть. Но вот в тех же плюсах функции далеко не всегда (в отличие от php, где у Вас нет никакого выбора) могут принимать произвольное число аргументов.

matiouchkine (То есть Вы) говорит, что в C++ можно объявить все функции принимающими произвольное количество аргументов. К чему это вообще — непонятно. Я специально уточнил в ответе на комментарий Disturbed, что возможность перегрузить функцию по количеству аргументов (а по их типу мы не можем) определяется программистом, а не создателями языка. То есть мы можем написать в C++ функцию, которую можно перегрузить по количеству принимаемых параметров. То, что мы можем написать функцию, которую нельзя перегрузить по тому же критерию, не делает перегрузку вообще невозможным.

У barmaley_exe (то есть меня) возникает законный вопрос: как в таком случае перегружать функции по количеству аргументов (Когда они все принимают произвольное количество аргументов)? Сама концепция перегрузки неприменима в таком случае. Невозможность применения перегрузки является доказательством моего аргумента.

matiouchkine (то есть Вы) говорит, что из существования примера с нужными свойствами следует неприменимость моего аргумента. Напоминаю: разговор у нас идет о причинах отсутствия перегрузки функций в php. В качестве аргумента я назвал произвольное количество аргументов функции как причину невозможности перегрузки функций. Как возможность создания программы в C++ с произвольным количеством аргументов сказывается на перегрузке — опять же, неясно.

barmaley_exe (то есть я) снова намекает о главной мысли своих постов: в php перегрузке функций попросту неоткуда взяться.

А в ответ ему советуют научиться читать. wtf?
В C++ Вы можете объявить функцию, которая не будет принимать переменное количество аргументов. Ее можно будет перегрузить (Забудем пока о перегрузке по типам аргументов).
В php Вы не сможете объявить такую функцию, которая могла бы быть перегруженной. И не потому, что перегрузки нет, а потому, что ей неоткуда взяться. Т.к. разницы между аргументами нет (sic!), а функции по умолчанию принимают произвольное (с некоторыми ограничениями, но не суть) количество аргументов, то и пространства для перегрузки попросту нет!

Про перегрузку функций — см. мое первое сообщений данной ветки.
И как Вы в таком случае будете перегружать функции? По типу, напоминаю, в php аргументы не различаются.
Где он компилируется? g++ жалуется на
test.cpp:11:12: error: ‘::main’ must return ‘int’
test.cpp: In function ‘int main()’:
test.cpp:12:14: error: invalid conversion from ‘int (*)(int, int)’ to ‘int (*)()’
test.cpp:13:43: error: too many arguments to function ‘int test1()’
test.cpp:3:5: note: declared here
А они покажут Вам при взгляде на объявление абстрактного класса, унаследованного от кого-нибудь, что он наследует? Я что-то сомневаюсь.

Ну и не все пользуются умными и навороченными IDE. Более того, случается так, что код просто смотрят, не редактируя (ну захотелось мне посмотреть, как %projectname% изнутри устроен). В таких случаях разворачивать его в IDE — нерационально, я считаю.

Но в целом, да — с учетом наличия умных IDE это не так критично.
Для увеличения очевидности и наглядности кода. Не надо бежать по иерархии классов вверх, чтобы посмотреть, какие методы есть у класса.
Да, но там оно задается специальным синтаксисом, а в php все функции по умолчанию могут принимать переменное количество аргументов.
Необязательные параметры особой роли не играют — они есть и в C++, где перегрузка, конечно же, существует.
А вот произвольное количество аргументов — это уже существенно.
А может убрать div.empty и прописать div.wrap'у padding-bottom?
1. На хабре (да и в Рунете в общем) есть over 9000 статей по оптимизации JS и, в частности, jQuery. рекомендую почитать их. В вашем коде используется неоптимальная выборка по классу (даже без указания тега), причем многократно. Хотя можно было бы закешировать этот элемент в какой-нибудь локальной переменной нашей анонимной функции (Здравствуйте, замыкания!) и обращаться к этому элементу практически бесплатно.

2. Решения на чистом CSS (хоть и с хаками) предпочтительнее. Хотя бы тем, что работает у мифических пользователей с отключенным JS и соответствует концепции разделения разметки, оформления и функционала.
Касаемо кучи мусора: я обычно использую решение с растягиванием основного контейнера на всю высоту и оставление некоторого отступа по размеру футера, на расстояние которого он потом подтягивается отрицательным magin'ом. Это буквально пара строчек в CSS (многая часть из которых нужна не только для прижатия футера), в то время как Ваше решение занимает 20 строк JS кода.
Русский facebook hacker cup, я бы сказал.
Как-то странно: говорится, что
Russian Code Cup — это состязание для самых сильных программистов Рунета.
Но при этом ни слова про гражданство в правилах.
> Вы имеете право участвовать в Russian Code Cup (далее — RCC), если соответствуете следующим требованиям на момент регистрации:
> Вам 18 и более лет
Защита от Короткевича?
А ограничения на гражданство нет? ACRush'а возьмете? =)
Как я понял из беглого просмотра стандарта,
Список аргументов разбивается по запятым на особые выражения (ВыражениеПрисваивания в документе по ссылке выше), которые не могут содержать оператор-запятую (Зато могут содержать оператор группировки (скобки), которые уже могут содержать выражения (Выражение в терминах стандарта) с оператором-запятой). Поэтому никаких проблем с неопределенным смыслом не возникает. А вот для оператора-группировки «аргумент» (операнд) является Выражением, т.е. позволяет использовать запятую.
Вы правы, здесь действительно нет оператора-запятой.
Моя вина, ввел хабраюзера Zerkella в заблуждение.
Извините, мое предыдущее сообщение не соответствует действительности.

Тут нет оператора запятой. Я ошибался и дело не в приоритете, а в том, что Array(...) — вызов функции, а [...] — инициализатор массива. Они оба принимают список аргументов с запятой в качестве разделителя. А вот [] как оператор индексирования хоть и имеет больший приоритет, но на операторе-запятой это никак не сказывается.

alert([3,4,5,6][1,2])
В этой записи [3,4,5,6] — инициализатор массива, а [1,2] — оператор индексирования (доступа к свойствам), у которого «аргумент» (операнд) — простое выражение, в вычислении которого участвует оператор-запятая (в первом случае ей было неоткуда взяться, т.к. по ней разбивается список аргументов; исключение составляет выражение в скобках).
А тут в чем разница?
То ли [5, 7] это [(5, 7)]
То ли [5, 7] это [5, 7]

А вот тут нам на помощь приходит приоритет операторов. У запятой самый низкий приоритет из всех операторов, а у квадратных скобок и вызовов функций (скобки в Array() и просто скобки () это не одно и то же) гораздо выше.

Information

Rating
Does not participate
Location
Россия
Works in
Registered
Activity