Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.04.2010, 00:42
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Возврат результата функции через её параметр
собственно, статья

я думаю
1) что красота - это, конечно, положительно, но если цель - добиться результата, то это не основной фактор
2) и соответственно, бывают случаи, когда функция иногда должна возвращать дополнительную информацию. Например, место действия - php, возвращаем массив, иногда может понадобться дополнительная информация. Чтобы вернуть ее не через параметр, нужно "усложнить" возвращаемое значение. Но это не всегда лучше

а что вы думаете?
Ответить с цитированием
  #2 (permalink)  
Старый 12.04.2010, 01:01
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

я считаю использование аргумента-ссылки оправдано, когда функция должна изменять уже существующий объект
для создания новых объектов следует использовать возвращение результата а не аргумент
Ответить с цитированием
  #3 (permalink)  
Старый 12.04.2010, 03:00
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

речь не об объектах, это уже "усложненный" случай

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

p.s. по поводу "я считаю использование аргумента-ссылки оправдано, когда функция должна изменять уже существующий объект" я подумал, что если функция должна изменять существующий объект, получаемый по ссылке, она должна быть его методом. По-крайней мере, контраргументы мне в голову пока не пришли, кроме "бывает, что функция не может быть методом объекта"
Ответить с цитированием
  #4 (permalink)  
Старый 12.04.2010, 16:58
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

А в Perl можно делать контекстно-зависимый вызов функции
А в PHP нельзя Разве что эмулировать, указывая явно:

function context_driven($params, $return_total=0) {
    return $return_total ? array( $params, count($params) ) : $params;
}

$p = context_driven(array(1,2,3)); // [1,2,3]
list($p, $t) = context_driven(array(1,2,3), 1); // [1,2,3], 3
Ответить с цитированием
  #5 (permalink)  
Старый 12.04.2010, 17:21
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Зато у перла грамматики нет
Ответить с цитированием
  #6 (permalink)  
Старый 12.04.2010, 18:00
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

Сообщение от Kolyaj Посмотреть сообщение
Зато у перла грамматики нет
Ня?
Ответить с цитированием
  #7 (permalink)  
Старый 15.04.2010, 20:31
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,576

Сообщение от x-yuri Посмотреть сообщение
собственно, статья
а что вы думаете?
да то же самое.
Я думаю тому автору нужно поменьше читать перед сном книги по LISP. Этот метод передачи параметра-переменной -- один из основных. В php например их только два - по ссылке и по значению. Странно смотрится на этом фоне решение возвращать из функции составные структуры. Легче и целесообразней что ли потом их разбирать снаружи?
По сигнатуре определения функции видно, что переменная передается по ссылке - и пользователю функции нет проблем понять что к чему.
Ответить с цитированием
  #8 (permalink)  
Старый 15.04.2010, 21:41
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от micscr
Этот метод передачи параметра-переменной -- один из основных. В php например их только два - по ссылке и по значению
один из основных или один из существующих? И речь не о методе передачи по ссылке а о возвращении результата через аргумент. Т.е. аргумент - это результат, т.е. чтобы узнать, что возвращает функция надо в идеале просмотреть код функции на предмет "возвращает ли она что-то через аргументы". Внимание, ключевая цитата:
Цитата:
В нормальном программном коде ясно видно, что является результатом, а что аргументами
возвращение результата через аргумент - это более простой способ, чем усложнение возвращаемого значения (возвращаемого нормальным способом). Но на данный момент я не вижу ситуации, когда бы он оказался к месту
Ответить с цитированием
  #9 (permalink)  
Старый 15.04.2010, 21:57
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

preg_match, preg_match_all , desu
Ответить с цитированием
  #10 (permalink)  
Старый 15.04.2010, 22:22
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от e1f
Зато у перла грамматики нет
(шутя) вот за это мы его и любим
а вообще, это язык, который произвел на меня наибольшее впечатление (положительное, естественно), хотя я на практике его, можно сказать, не использовал
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строковый параметр функции со спецсимволами JooZ Общие вопросы Javascript 6 09.04.2009 16:18