![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| ginnie |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
Уважаемые коллеги! Интересный вопрос задали вчера на perlmonks.org:
Результат
первое время правильное, второе - нет. Попробуйте объяснить почему! В первую очередь жду ответов от людей с небольшой (или нулевой) репутацией -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
||||
|
|||||
| rcdimon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 766 Регистрация: 12.7.2004 Где: Москва Репутация: 1 Всего: 2 |
Ну походу в первом случае списочный контекст, а во втором нет
|
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
# perl -le 'print scalar [0..2]; print scalar localtime 0x8142180'
ARRAY(0x8142180) Thu Apr 18 19:10:24 1974 # |
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
rcdimon, если имеется ввиду контекст вызова localtime(), то он в обоих случаях списочный.
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| KSURi |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 20 Всего: 27 |
Я понял, что localtime принимает [0..2] в кач-ве аргумента (прототип - ;$). Но как это связано с адресом в памяти этого аргумента?
-------------------- Died at Life.pl line 21 |
|||
|
||||
| arto |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1495 Регистрация: 31.10.2004 Репутация: 38 Всего: 40 |
perldoc -f localtime получает в качестве параметра число секунд с начала эпохи.
# perl -le 'print scalar localtime [0..2]; print scalar [0..2]; print scalar localtime 0x8142180' Thu Apr 18 19:10:24 1974 ARRAY(0x8142180) Thu Apr 18 19:10:24 1974 # в данном случае аргумент -- адрес. |
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 38 Всего: 49 |
Т.к. KSURi и arto уже все рассказали, добавлю, что в сложных ситуациях очень помогает модуль B::Deparse, который парсит программу в структуру, с которой обычно работает интерпретатор, а затем восстанавливает из этой структуры исходный текст программы, при этом некоторые синтаксические конструкции становятся более понятными. Например наш код при обработке с perl -MO=Deparse,-p превращается в
нюанс, связанный с использованием числового значения адреса массива в качестве параметра функции localtime() являлся частью запутывания вопроса Это сообщение отредактировал(а) ginnie - 29.9.2008, 17:03 -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |