ОК, 6-летний вентилятор закрытия. Вы хотите услышать простейший пример закрытия?
Давайте представим следующую ситуацию: водитель сидит в машине. Этот автомобиль находится внутри самолета. Самолет находится в аэропорту. Способность водителя получать доступ к вещам вне его автомобиля, но внутри самолета, даже если этот самолет выходит из аэропорта, является закрытием. Вот и все. Когда вам исполнится 27, посмотрите на подробное объяснение или в приведенном ниже примере.
Вот как я могу преобразовать историю своего плана в код.
var plane = function (defaultAirport) {
var lastAirportLeft = defaultAirport;
var car = {
driver: {
startAccessPlaneInfo: function () {
setInterval(function () {
console.log("Last airport was " + lastAirportLeft);
}, 2000);
}
}
};
car.driver.startAccessPlaneInfo();
return {
leaveTheAirport: function (airPortName) {
lastAirportLeft = airPortName;
}
}
}("Boryspil International Airport");
plane.leaveTheAirport("John F. Kennedy");
В Path :: Tiny есть метод touch
, а остальное - для разбиения желаемого диапазона дат. Обратите внимание, что приведенный ниже скрипт создает файлы (по умолчанию 10) с очень простыми именами, поэтому, пожалуйста, запускайте в совершенно новом каталоге, чтобы не перезаписывать что-либо не работает, поскольку spew
возвращает истину / ложь, а не объект. (touch
действительно возвращает объект, и поэтому он может иметь методы, связанные с ним, но здесь он должен идти после spew
, поскольку spew
изменяет время модификации.)
Выше создаются файлы [ 1123]
-rw-rw-r--. 1 xxx 8 Jul 31 2016 s1.txt -rw-rw-r--. 1 xxx 8 Mar 1 2017 s2.txt -rw-rw-r--. 1 xxx 8 Sep 30 2017 s3.txt -rw-rw-r--. 1 xxx 8 May 1 2018 s4.txt -rw-rw-r--. 1 xxx 8 Nov 30 2018 s5.txt
Возможно, вы захотите поиграть с размером шага и отметками времени первого / последнего времени.
Очевидно, что есть проблема с Time::Piece
, которая, вероятно, указывает на проблему с этой системой & dagger; sup>, поскольку модуль находится в ядре с 5.9.5. Тогда я бы использовал Time::Local::timelocal
use Time::Local;
my $seconds_epoch = timelocal $sec, $min, $hour, $mday, $mon, $year;
, где $mday
идет от 1
, а все остальные начинаются с 0
. Обратите внимание, что, хотя традиционно указывается год с учетом +1900
(то есть 116
для 2016 года), нормальные годы также принимаются. Так
$beg = timelocal 0, 0, 0, 1, 0, 2016;
$end = timelocal 0, 0, 0, 31, 11, 2018;
или, для большей гибкости с датами
($beg, $end) = map {
($yr, $m, $d) = unpack "A4A2A2";
timelocal 0, 0, 0, $d, $m-1, $yr
} (20160101, 20181231)
& dagger; sup> & thinsp; Проблема пропавшего Time::Piece
описана в этого поста в блоге Дэйва Кросса . Также смотрите комментарии под вопросом и чат.