Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Что означает void в php?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Clerik
Отправлено: 24 Ноября, 2016 - 12:45:50
Post Id


Новичок


Покинул форум
Сообщений всего: 17
Дата рег-ции: Авг. 2016  


Помог: 1 раз(а)




Изучая виды сортировок, наткнулся на слово void. Никак не могу понять что оно означает?

PHP:
скопировать код в буфер обмена
  1.  
  2. void bubbleSort2(int *a, size_t size) {
  3.     size_t i, j;
  4.     int tmp;
  5.     for (i = 1; i < size; i++) {
  6.         for (j = i; j > 0; j--) {
  7.             if (a[j] < a[j-1]) {
  8.                 tmp = a[j];
  9.                 a[j] = a[j-1];
  10.                 a[j-1] = tmp;
  11.             }
  12.         }
  13.     }
  14. }
  15.  
 
 Top
3d_killer
Отправлено: 24 Ноября, 2016 - 12:57:05
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




в PHP не используется, пишется условно только в документации, но широко распространено в C++ означает метод или функцию
(Добавление)
вот тоже писали:
в php слово void используется только в документации, как псевдо-тип, чтобы обозначить, что «возвращенное значение бесполезно. void в списке параметров означает, что функция не принимает параметров.»
 
My status
 Top
Мелкий Супермодератор
Отправлено: 24 Ноября, 2016 - 13:11:11
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




3d_killer пишет:
в PHP не используется

Уже используется. Принят в PHP 7.1, релиз которого ожидается через недельку.
https://wiki.php.net/rfc/void_return_type

Проверка времени исполнения, что функция, объявленная как return void ничего не возвращает.

В документации используется в списке параметров ещё, что означает, что функция не принимает никаких аргументов. В пользовательском коде вроде пока нет такого type hint.


-----
PostgreSQL DBA
 
 Top
NeuroZ
Отправлено: 25 Ноября, 2016 - 13:58:56
Post Id



Посетитель


Покинул форум
Сообщений всего: 393
Дата рег-ции: Апр. 2012  


Помог: 2 раз(а)




Мелкий пишет:
Проверка времени исполнения, что функция, объявленная как return void ничего не возвращает.

А зачем ее использовать? Только для упрощения тестирования? Или она реально будет быстрее выполнятся чем функция без указания типа?
 
 Top
Мелкий Супермодератор
Отправлено: 25 Ноября, 2016 - 14:07:14
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Затем же, зачем и type hinting использовать. Да и private/protected сюда же. Зачем их использовать? Документация и валидация контракта объявления метода на уровне языка.


-----
PostgreSQL DBA
 
 Top
NeuroZ
Отправлено: 25 Ноября, 2016 - 14:31:49
Post Id



Посетитель


Покинул форум
Сообщений всего: 393
Дата рег-ции: Апр. 2012  


Помог: 2 раз(а)




Мелкий пишет:
Документация и валидация контракта объявления метода на уровне языка.

Я к тому, что по сути не будет разницы между
PHP:
скопировать код в буфер обмена
  1. function abc () {some code without return...}

и
PHP:
скопировать код в буфер обмена
  1. function abc (): void {some code without return...}

Или все таки будет разница? Ведь код отработает одинаково и в первом и во втором случае? Просто хотелось бы практическую разницу увидеть...

*Ну а private/protected это же вообще из областей видимости...
 
 Top
Мелкий Супермодератор
Отправлено: 25 Ноября, 2016 - 14:53:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




NeuroZ пишет:
Ну а private/protected это же вообще из областей видимости...

Да. Но эффективно смысл тот же. Эти данные не нужны для работы кода. Совсем не нужны,
Можно всё объявлять public и это будет работать точно так же, как если бы в тех местах были private. (именно тот код, который раньше вызывал приватные методы)
Можно никаких type hint не ставить - и тот же самый код будет работать.

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

NeuroZ пишет:
Ведь код отработает одинаково и в первом и во втором случае?

Да, одинаково.


-----
PostgreSQL DBA
 
 Top
NeuroZ
Отправлено: 25 Ноября, 2016 - 15:39:43
Post Id



Посетитель


Покинул форум
Сообщений всего: 393
Дата рег-ции: Апр. 2012  


Помог: 2 раз(а)




Понял, спасибо. В общем если быть кратким, основное значение: документация и тестирование.
 
 Top
OrmaJever Модератор
Отправлено: 26 Ноября, 2016 - 00:29:55
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Мелкий пишет:
Да, одинаково.

по идее конечно не должен. На строчке

надо что-то выводить, варнинг, стрикт, или хотя бы нотис


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB