Ustorka.ru

Информационный портал
5 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

«Если гора не идет к Магомету, Магомет идет к горе» — значение, происхождение пословицы

если гора не идёт к Магомету

B.B.: «. Of course, the motor has annihilated distance; but I confess that if you were rather nearer to me, it would be a little more convenient.» Mrs. Dubedad: «You see, this studio and flat are self-contained. I have suffered so much in lodgings.» B.B.: «. say no more, Mrs. Dubedad: you shall not move. If the mountain will not come to Mahomet, Mahomet must come to the mountain.» (B. Shaw, ‘The Doctor’s Dilemma’, act III) — Б. Б.: «. Хотя автомобиль и уничтожил расстояния, но было бы удобнее, если бы вы переселились поближе.» Миссис Дьюбедад: «Видите ли, здесь мастерская и квартира вместе. Я так намучилась, когда жила в меблированных комнатах.» Б.Б.: «. ни слова больше, миссис Дьюбедад. Вы останетесь здесь. Если гора не идет к Магомету, то Магомет идет к горе.»

6 mountain

mountain chain /range/ [stream, pass, air, climate, plants, flowers] — горная цепь [речка, -ый перевал, -ый воздух, -ый климат, -ые растения, -ые цветы]

a mountain of debts [of difficulties] — масса /куча/ долгов [неприятностей]

♢ to make a mountain out of a molehill — pl делать из мухи слона

if the mountain won’t come to Mohammed, Mohammed must go to the mountain — посл. если гора не идёт к Магомету, то Магомет идёт к горе

7 if the mountain will not come to Mohammed, Mohammed must go to the mountain

8 if the mountain won’t come to Mohammed, Mohammed must go to the mountain

9 if the mountain won’t go to Mahomet, Mohamet must go to the mountain

10 if the mountain won’t go to Mohammed, Mohammed must go to the mountain

11 if the mountain won’t go to Muhammad, Muhammad must go to the mountain

12 if the mountain won’t go to mohammed, mohammed must go to the mountain

13 mountain

snow-covered mountains — горы, покрытые снегом

chain / range of mountains — гряда, цепь гор

elevation / height of a mountain — высота горы

to climb / scale a mountain — восходить на гору

I’ve got a mountain of work to do. — У меня куча работы.

You’ll never eat that mountain of food. — Ты никогда не съешь такую гору еды.

to make a mountain out of a molehill — делать из мухи слона; преувеличивать

The mountain (in labour) has brought forth a mouse. — Гора родила мышь.

If the mountain will not come to Mohammed/Mahomet, Mohammed/Mahomet must go to the mountain. — Если гора не идёт к Магомету, Магомет идёт к горе.

We spent our winter holidays in a lovely little mountain village. — Зимние каникулы мы провели в симпатичной небольшой горной деревушке.

14 If the mountain will not come to Muhammad, Muhammad will come to the mountain

15 If the mountain won’t come to Muhammad, Muhammad will come to the mountain.

16 Mahomet must go to the mountain

Dissembling his chagrin as best he could, he kept on the lookout for Cowperwood at both of the clubs of which he was a member; but Cowperwood had avoided them during the period of excitement, and Mahomet would have to go to the mountain. (Th. Dreiser, ‘The Titan’, ch. XIII) — Стараясь по возможности скрыть свою досаду, Шрайхарт искал случая встретиться с Каупервудом в одном из клубов, но Каупервуд, выжидая, пока уляжется шум, намеренно там не показывался, и поскольку гора не шла к Магомету, то Магомету пришлось идти к горе.

17 гора

бумаг heap of paper;
идти в гору go* up in the world;
стоять

ой за кого-л., что-л. stand* firm for smb., smth. ;
be* solidly behind smb. ;
stick* up for smb., smth. разг. ;
сулить золотые горы promise a fortune, promise a moon;

с плеч (свалилась) (it`s) a load off one`s mind;
не за

18 если

вы заняты, приходите завтра if you are busy come tomorrow;

не хотите, не приходите don`t come if you don`t want to, don`t come unless you want to;

бы он был свободен, он пришёл бы сегодня he would have come today if he had been free;
о

бы. If only. ;
что,

не if. not, unless;

бы не кто-л., что-л. but for smb., smth.,

он и был там, я его не видел even if he was there I didn`t see him;

Читайте так же:
Сочинения о весне: весенняя природа, весна в городе, весенние приметы, весенние праздники

2. (при сопоставлении) обычно не переводится ;

бы да кабы е if ifs and ans were pots and pans.

19 Столовая Гора

20 атласский гора

  • 1

См. также в других словарях:

Если гора не идет к Магомету, то Магомет идет к горе — Обычно происхождение этого выражения связывают с одним из рассказов о Ходже Насреддине герое восточного фольклора, известном выдумщике и острослове. Так, в одном из арабских сборников (примерно 1631) говорится о том, как Ходжа Насреддин Джоха эль … Словарь крылатых слов и выражений

Если гора не идет к Магомету, то Магомет должен идти к горе — Если гора не идетъ къ Магомету, то Магометъ долженъ идти къ горѣ. Ср. Теперь остается всего какихъ нибудь тридцать часовъ ѣзды, чтобъ свидѣться. Я. люблю вѣрить, что если гора нейдетъ къ Магомету, то Магометъ долженъ идти къ горѣ. Остается… … Большой толково-фразеологический словарь Михельсона (оригинальная орфография)

если гора не идет к Магомету, то Магомет должен идти к горе — Ср. Теперь остается всего каких нибудь тридцать часов езды, чтоб свидеться. Я. люблю верить, что если гора нейдет к Магомету, то Магомет должен идти к горе. Остается только спросить: кто из нас двух находится в неприятном положении горы,… … Большой толково-фразеологический словарь Михельсона

Если гора не идет к Магомету, то Магомет идет к горе — крыл. сл. Существуют различные объяснения этого происхождения. Пологают, например, что оно восходит к одному из анекдотических рассказов, связанных с Ходжой Насреддином, любимым героем ближневосточного фольклора, Однажды, когда он выдавал себя за … Универсальный дополнительный практический толковый словарь И. Мостицкого

Мухаммед — (محمد) Толкование имени: Хвалимый, прославляемый Имя на других языках: араб. محمد‎‎ англ. Muhammad нем. Mohammed фр. Mahomet Имя при рождении: Мухаммад ибн Абдуллах ибн Абду … Википедия

«Если гора не идет к Магомету, Магомет идет к горе» — значение, происхождение пословицы

Войти

Авторизуясь в LiveJournal с помощью стороннего сервиса вы принимаете условия Пользовательского соглашения LiveJournal

"Если гора не идёт к магомету, магомет идёт к горе"

В ходе длительных споров, а также и судебных разбирательство по поводу кощунственных выставок в музее и общественном центре им. А. Д. Сахарова («Осторожно, религия» 2003 г. и «Запретное искусство» 2006 г.) аргументы сторонников и защитников были различны.

Самые решительные отстаивали принципиальное право личности на кощунство, другие параллельно указывали, что поскольку и святыни-то никакой нет, то и понятие кощунства не имеет смысла. Не столь принципиальные и более прагматические, придерживающиеся того принципа, что для подзащитного лучше бы тихо выйти, нежели громко сесть, не вдавались в апологию кощунства, вероятно, находя это в данной ситуации контрпродуктивным, но прибегали к аргументу закрытого частного пространства.

Смысл его в том, что никто не заставлял православных активистов, а равно и других граждан, критикующих кощунства, посещать выставку. Когда бы они прошли мимо музея и общественного центра им. А. Д. Сахарова, они ничего бы не увидели, и их чувства никак бы не пострадали. Тут, конечно, можно возразить, что таким образом современное искусство приравнивалось к изысканным наслаждениям, которым по взаимному согласию предаются при закрытых дверях лица, достигшие совершеннолетия, но цель реалистичного адвоката не в том, чтобы представить своего клиента высочайшим образцом добродетели, но в том, чтобы избавить его от наказания. Апология современного искусства — это за отдельную плату и лишь в той мере, в какой это не препятствует оправданию (или смягчению наказания) по выдвинутому обвинению.

Расширительно такая аргументация используется и в спорах касательно соблазнительных зрелищ и мероприятий, проводимых не только в закрытых помещениях, но и на открытом воздухе и в публичном пространстве. Когда в спорах о гей-парадах, лав-парадах etc. противники такого рода мероприятий жалуются, что они не знают, как отвечать своим невинным детям на их вопросы о смысле и значении вдруг открывающегося перед ними зрелища, применяется то же самое «никто не неволит». В смысле «А вольно же вам было гулять с детьми по главной улице, когда вы могли погулять и в переулочке, где никаких шествий не проводится». Можно в переулочке, можно еще где-нибудь подалее, можно было и дома посидеть. В любом случае у вас была возможность избежать встречи с парадом, который вам так не нравится — и на что ж вы тогда жалуетесь.

Проблема в том, что когда смиренные христиане, совершенно не желая идти на кого-либо с дрекольем, отказываются и от посещения кощунственных мероприятий, проводимых в закрытых помещениях, и от прогулок по главной улице в известные парадные дни, начинается новый этап художественной свободы. А именно — визит хора феминисток в Храм Христа Спасителя, где они, встав у царских врат. открыто и бесстыдно кощунствуют, воспроизводя аналогичные концерты комсомольских активистов в 20-30-е гг. XX века. Тех времен, когда Русская Церковь всходила на Голгофу. Или визит активистов норвежской экологичесой организации в главный лютеранский собор г. Осло, где они прямо во время богослужения начинают раздеваться и изображать совокупление. Тут уже затруднительно применять прежнюю защитительную аргументацию, поскольку это уже не музей им. А. Д. Сахарова, на кощунственные самодурства в котором можно было и не ходить, это уже не главная улица города, которую при желании можно и обойти. Это Дом Мой, Дом молитвы наречется, и его-то уж никак не получится обойти, чтобы не мешать свободе художественного самовыражения. Вариант «Тогда мы идем к вам» это исключает.

Читайте так же:
Как засолить щучью икру: классический рецепт, в тузлуке. Икра щуки: польза, подготовка икры для засолки, способы засолки

Возможен, конечно, и тут адвокатский прием по аналогии. «А вольно же вам монопольно использовать для своих собраний огромные и богато украшенные здания в самых видных местах города. Собирайтесь где-нибудь в катакомбах, там вас и не тронут. Ну, до поры, до времени, естественно. Прогресс и свободы неостановимы». Христиане и это поймут, потому что такой прогресс и такая свобода вполне описаны в Новом Завете. В последние дни именно так и будет.

Да и миряне еще в самом начале казавшегося тогда лучезарным XX века то самое и отмечали — «Я чую близость времен, когда христиане будут опять собираться на молитву в катакомбах, потому что вера будет гонима, — быть может, менее резким способом, чем в нероновские дни, но более тонким и жестоким: ложью, насмешкой, подделками, — да и мало ли чем еще! Разве ты не видишь, кто надвигается? Я вижу, давно вижу!» (В. С. Соловьев, июнь 1900 г.).

Нападать с дрекольем на срамных певиц и на обеспечивающих им заранее обещанную информационную поддержку журналистов «Новой газеты» — да, это не наш метод. Но прямо сказать, что от вас уже откровенно смердит серой — это сделать и можно, и нужно.

Если гора не идёт к Магомету…

Сколько раз приходилось читать сетования на то, что в наше время дети лишены книг, что издательства, рвущие деньгу на детективах и порнухе, равнодушны к маленьким читателям, что государственным органам, призванным контролировать этот сектор культурной жизни, дела нет до духовного воспитания подрастающего поколения, и так далее.

Всё верно. Так что же делать? Ждать, когда в Кремле, в Белом доме, в Госдуме, в Совете Федерации, в Минкульте и в Минпросе прозреют? Или поступать в соответствии со старинной поговоркой: «Если гора не идёт к Магомету, Магомет идёт к горе»? Именно так поступает детский писатель Владимир Хлынов. Он не только пишет книги для детей, но и доводит их до читателя. Для раздачи юным посетителям он передал Пушкинскому музею-заповеднику в Малых Вязёмах полторы тысячи своих книг. Детскому оздоровительному лагерю «Заря» (Солнечногорский район) — две тысячи. Московской школе-интернату № 4 для сирот и детей, оставшихся без попечения родителей, — пятьсот экземпляров. Центру Славянской культуры в Варшаве — две тысячи. Библиотеке в некрасовском музее-заповеднике «Карабиха» (Ярославская область) — пятьсот экземпляров. А больше всего книг он подарил школе № 5 города Железнодорожный, которую он окончил в 1976 году[?]

Особая его забота — ежегодный международный конкурс детских рисунков «А.С. Пушкин глазами детей». Несколько месяцев назад наше издание сообщало о том, как проходил конкурс-2011, но не грех напомнить об этом хорошем деле. В частности, и потому, что, как ни странно, не всем по душе то, что там происходит. Кроме дипломов и книг (Владимир Хлынов передал оргкомитету для раздачи триста экземпляров своих книг), победители получали обувь производства московской фабрики «Парижская коммуна». (Сразу поясним — Владимир Хлынов возглавляет одно из подразделений этого прославленного предприятия.) Когда он рассказывал об этом по радио, беседовавшая с ним журналистка фыркнула — при чём тут обувь? Она, видимо, не знала, что многие семьи в нашей стране живут бедно[?]

Разумеется, самого Хлынова эти наскоки ничуть не смутили. Сам он прочно стоит на земле, прошёл большой трудовой путь, служил в Вооружённых силах, строил Ленинградскую атомную, теперь, как уже говорилось, на производстве. У него на всё хватает энергии — и на службу, и на писательство, и на пушкинистику, и на общественную работу. Договаривается, например, о том, что победители детского конкурса будут бесплатно посещать музеи в Малых Вязёмах и в Карабихе. Или о том, что его книгу «Сказка о Карлуше и его друзьях в Царицыне» будут дарить каждому первокласснику в Царицынском центре образования № 548, где директором народный учитель России Ефим Рачевский.

Самой лучшей своей вещью Владимир Хлынов считает сказку «Мишка-Тишка». Гордится тем, что её в своё время одобрил знаменитый артист Ролан Быков, а он, как известно, детей понимал. А ещё тем, что сказка его участвовала в эксперименте, который проводили учёные. В эксперименте подсчитывалось, сколько раз ребёнок попросит ещё раз почитать ему ту или иную книжку. Так вот, «Мишку-Тишку» юные читатели за три года просили прочитать им более четырёхсот раз. А ещё её одобрил сам Н.А. Некрасов — правда, во сне. Но такой сон тоже о чём-то говорит, не правда ли?

Конечно, возможности у Владимира Хлынова, менеджера и писателя из города Железнодорожный, скромнее, чем у федерального министра. Но если бы все действовали столь же активно, литературный процесс в нашей стране имел бы куда меньше недостатков.

Читайте также

МАГНИТ-ГОРА

МАГНИТ-ГОРА Поутру собравшись, помню, В дальние края, С вещевым мешком, с гармонью Прыгнул в поезд я. Помню, выдали спецовку, Помню, на заре Объявили остановку На Магнит-горе. Поначалу было вьюжно, А потом жара, И работали мы дружно, С самого утра. Синий дым от

Читайте так же:
Chanel № 5: описание аромата, отзывы. Как появились духи, ставшие визитной карточкой Коко Шанель: история создания легендарного аромата Chanel № 5

10. СКАЗОЧНАЯ ГОРА

10. СКАЗОЧНАЯ ГОРА В тихие вечера, когда из-за холмов выкатывался золотой месяц и дрожащий свет его зеленоватым потоком проникал в горницу, отчего в избушке всё видоизменялось и принимало таинственный смысл, хорошо было посидеть под оконцем и послушать бабушкины

9. Если бы молодость знала, если бы старость могла…

9. Если бы молодость знала, если бы старость могла… Если отношения в российских и немецких коллективах в большей или меньшей степени можно сравнивать между собой, то отношение немцев к своим старикам в корне отличается от того, к чему мы привыкли дома. С тех пор как одной

Если не теперь, то когда? Если не здесь, то где? Если не вы, то кто? (1 октября 2007 года)

Если не теперь, то когда? Если не здесь, то где? Если не вы, то кто? (1 октября 2007 года) Я имел обыкновение задаваться вопросом, в какое историческое время и где я хотел бы жить. В 1930-е годы моим первым выбором обычно была Европа. Когда сгустились тучи войны, я был бы окружен

Гора родила мышь

Гора родила мышь Буш демонстрировал свое удовольствие тем, что Лула был его соседом справа на ужине в пятницу. Ху Цзиньтао, которого Буш уважает за огромный рынок его страны, за способность производить потребительские товары по низкой цене и огромные резервы в долларах и

Если сенсации не происходит, ее выдумывают. Когда сенсация становится провокацией. Если вы не умеете интервьюировать преступников, пройдите стажировку в тюремной камере

Если сенсации не происходит, ее выдумывают. Когда сенсация становится провокацией. Если вы не умеете интервьюировать преступников, пройдите стажировку в тюремной камере — Право, трудно поверить в то, что газетные магнаты задались сознательной целью взращивать убийц и

Гора (22.08.2012)

Гора (22.08.2012) Сезанн всю жизнь рисовал гору Сен-Виктуар. В любом музее, в любой стране вы найдете картину с изображением этой горы — Сезанн нарисовал сотни холстов с этим сюжетом.Гора находится недалеко от его родного города Экс-ан-Прованс, где он и жил почти всю

Гора Сужденная

Гора Сужденная «Некий поселянин из Шаньси чувствовал себя крайне несчастным. От отца ему досталась земля, совершенно неплодородная. Большая часть ее заключалась в таком каменистом холме, где даже неприхотливые овцы не могли достать себе пропитания. Правда, дед когда-то

Что, если бы я подошла тогда к ней и обняла? Что, если бы поддержала?

Что, если бы я подошла тогда к ней и обняла? Что, если бы поддержала? В раннем детстве общалась с несколькими ребятами, которые сильно издевались над местной лесбиянкой, кстати, премилейшей девушкой. Будучи ребенком, я однажды присутствовала при оскорблениях в ее адрес.

Ваша ориентация неважна, если речь идет о преступлении

Ваша ориентация неважна, если речь идет о преступлении Когда мне был 21 год, то в руках у меня был красный диплом юриста, мечта, и мне улыбнулась удача. Не всем в столь нежном возрасте удается устроиться работать следователем в Следственный комитет России. У меня

«Гора языков»

«Гора языков» Человек «Гора языков» ЗАМЕТКИ ПРИСТРАСТНОГО ПУТЕШЕСТВЕННИКА Сергей ПРУДНИКОВ, САНКТ-ПЕТЕРБУРГ Этот регион знаком нам сегодня в основном из криминальных сводок, реальная жизнь Дагестана остаётся загадкой. Очаг агрессивности или земля традиционного

Читайте так же:
Какие формы и типы лица бывают у женщин: краткое описание

ВОЛШЕБНАЯ ГОРА ВОЛШЕБНАЯ ГОРА Владимир Бондаренко 24.10.2012

Геннадий Сазонов ЕСЛИ ГОРА НЕ ИДЁТ К НИКОЛАЮ…

Геннадий Сазонов ЕСЛИ ГОРА НЕ ИДЁТ К НИКОЛАЮ… Напомню содержание предыдущего очерка, опубликованного в "Завтра" N35. По личной инициативе Николай Титов из Вологодской области взялся обустроить часть одного из склонов Цыпиной горы под древним Кирилловым для организации

LINQ для PHP. Часть 2. Если гора не идёт к Магомету, Магомет идёт к горе

Как можно было заметить из моей предыдущей статьи со сравнением библиотек LINQ для PHP, библиотек много, а качества мало: ленивые вычисления не реализованы ни в одной библиотеке, тесты есть в половине случаев, типы коллбэков ограничены, а иногда и вовсе незнамо что выдаётся за LINQ. Поэтому я написал свою библиотеку. Встречайте:

YaLinqo — Yet Another LINQ to Objects for PHP

  • Самый полный порт .NET LINQ на PHP, со многими дополнительными методами. Некоторые методы отсутствуют, но работа ведётся. Всего реализовано более 70 методов.
  • Ленивые вычисления, текст исключений и многое другое, как в оригинальном LINQ.
  • Детальная документация PHPDoc к каждому методу. Текст статей адаптирован из MSDN.
  • 100% покрытие юнит-тестами.
  • Коллбэки можно задавать замыканиями, «указателями на функцию» в виде строк и массивов, строковыми «лямбдами» с поддержкой нескольких синтаксисов.
  • Ключам уделяется столько же внимания, сколько значениям: преобразования можно применять и к тем, и к другим; большинство коллбэков принимает на вход и то, и другое; ключи по возможности не теряются при преобразованиях.
  • Минимальное изобретение велосипедов: для итерации используются Iterator, IteratorAggregate и др. (и их можно использовать наравне с Enumerable); исключения по возможности используются родные похапэшные и т.п.

Реализованные методы

  • Генерация: cycle, emptyEnum (empty), from, generate, toInfinity, toNegativeInfinity, matches, returnEnum (return), range, rangeDown, rangeTo, repeat, split;
  • Проекция, фильтрация: ofType, select, selectMany, where;
  • Группировка, соединение: groupJoin, join, groupBy;
  • Агрегация: aggregate, aggregateOrDefault, average, count, max, maxBy, min, minBy, sum;
  • Множества: all, any, contains;
  • Паджинация: elementAt, elementAtOrDefault, first, firstOrDefault, firstOrFallback, last, lastOrDefault, lastOrFallback, single, singleOrDefault, singleOrFallback, indexOf, lastIndexOf, findIndex, findLastIndex, skip, skipWhile, take, takeWhile;
  • Конвертация: toArray, toArrayDeep, toList, toListDeep, toDictionary, toJSON, toLookup, toKeys, toValues, toObject, toString;
  • Действия: call (do), each (forEach), write, writeLine.

Пример

Теперь рассмотрим приведённый выше пример детальнее. На самом деле существует несколько вариантов записи этого запроса: с помощью замыканий и с помощью строковых лямбд. У лямбд тоже два синтаксиса: можно использовать имена переменных по умолчанию (v и k для значения и ключа, соответственно), можно задать осмысленные.

Исходные данные (либо из базы, либо из какого-нибудь сервиса JSON пришёл, либо «железные» константы, либо ещё какой источник):

Собственно, задача: отфильтровать продукты с ненулевым количеством, поместить в соответствующие категории. Продукты отсортировать сначала по убыванию количества, потом по имени. Категории отсортировать по имени. Должно получиться следущее (для краткости переформатировал):

Ниже приведён пример с использованием замыканий из PHP 5.3. Самая длинная запись, однако наилучшая поддержка в разнообразных IDE.

Запись с помощью строковых лямбд. Слева от оператора «==>» имена аргументов, справа — возвращаемое значение.

И наконец самая краткая запись. Если нет оператора «==>», то используются имена переменных по умолчанию: v для значения, k для ключа, a и b для сравниваемых значений и т.п.

(Сомнительные) архитектурные решения

Просто так один-в-один оригинальный LINQ не скопируешь: разные языки, разные возможности, разные особенности. Поэтому часто приходилось делать выбор. Насколько хороший или плохой — судить вам. Обсуждение приветствуется.

Ключи

Начнём с самого сомнительного: ключи объявляются важной частью данных. Причина: они явно присутствуют в родных похапэшных итераторах, они важны в массивах, они важны при преобразовании в JSON. В общем и целом, в PHP повсеместно используются ключи, поэтому пренебрегать ими, как в некоторых других библиотеках, мне не хотелось бы.

Однако в оригинальном LINQ никаких ключей у последовательностей нет, поэтому приходится увеличивать количество аргументов как у коллбэков (теперь они все могут работать с ключом, если это возможно), так и у самих методов LINQ: resultSelector превращается в resultSelectorValue + resultSelectorKey. Однако в большинстве случаев разработчику об этом думать не нужно: коллбэки можно передавать с меньшим количеством аргументов, а у всех методов LINQ для аргументов типа resultSelectorKey заданы значения по умолчанию.

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

  • Заключительной операцией вместо toArray/toArrayDeep вызвать toList/toListDeep.
  • Вызвать метод toValues — эквивалент array_values, но ленивый, как select.
Читайте так же:
Красивое письмо лучшей подруге о дружбе до слез, которая уезжает, на День рождения, просто так, взрослой подруге в прозе: образец, пример письма
Порядок аргументов

На втором месте по сомнительности решение о порядке аргументов в функциях и коллбэках. Они всегда идут в порядке от (теоретически) наиболее используемого к наименее используемому. В коллбэках поэтому на первом месте обычно идёт значение, а потом ключ, потому что значение важно почти всегда, а ключ — нет. Однако порядок аргументов, возможно, теперь сложнее запомнить. Например, в select сначала идёт выборка значения, а в toDictionary — выборка ключа.

Впрочем, нам, похапэшникам, к такому безобразию не привыкать — весь язык испещрён совершенно случайным порядком аргументов (тех же needle и haystack).

Индексы элементов

Неочевидное решение для тех, кто пользовался оригинальным LINQ: методы типа indexOf, elementAt работают с ключами, а не числовым положением элемента в перечилении. Если вам нужно положение, то предварительно вызовите toValues — ключи станут последовательными: 0, 1, 2, 3 и т.д. Также для методов типа select нет перегрузок с коллбэками, принимающими положение элемента. Аналогично, используйте toValues.

Аргументы лямбд

В библиотеке linq.js, которой я вдохновлялся при написании, у всех коллбэков аргументы называются $, $$, $$$, $$$$. В PHP такого не бывает. Можно сделать преобразование строк, но хотелось бы оставить код валидным, пусть даже он внутри строчки. Называть аргументы бессодержательно $a, $b, $c тоже не хочется. Поэтому принято решение использовать имена, соответствующие содержимому:

  • Обычно v для значения, k для ключа
  • Если значений несколько, то v1 и v2
  • Если значение — последовательность, то e
  • Для аккумулятора при агрегации — a
  • Для методов сравнения — a и b
  • (Может, что-то ещё забыл)
«Сомнительные» коллекции

Класса List нет, метод toList возвращает то же самое, что toArray, только с последовательными ключами (0, 1, 2 и т.д.)

Класс Dictionary есть. Изначально задумывался исключительно как база для Lookup, но сейчас стал отдельной полноценной коллекцией. Отличие от обычных массивов — ключами могут быть объекты (возможно в оригинальном LINQ). Но фактически в самом LINQ объекты-ключи поддерживаются далеко не везде, потому что PHP не позволяет использовать объекты-ключи в foreach. Можно все циклы переписать, но насколько игра стоит свеч — вопрос.

Класс Lookup есть. По ключу возвращает список значений (или пустой массив, если ключа нет).

Обе коллекции поддерживают метод toArray, который возвращает внутренний массив.

Документация из MSDN

Ко всем методам скопирована справка из MSDN, затем адаптирована под реалии порта. Где-то описания спёрты из других проектов. Где-то — написаны самостоятельно. Если найдёте ошибки — сообщайте.

В целом, справка получилась весьма солидная. У некоторых методов нехилые такие статьи.

Имена методов

Некоторые слова в PHP нагло захапаны самим языком, причём во всех регистрах. Даже empty нельзя использовать как имя метода. Поэтому, где есть конфликты, методы переименованы (в списке методов в начале статьи оригинальные имена методов даны в скобках). В частности, run/forEach стали call/each.

Имена исключений

В PHP нет встроенных исключений, которые есть в .NET. Однако я постарался избежать создания ненужных классов. Так, вместо InvalidOperationException используется UnexpectedValueException. В конце концов, недопустимой операция становится при неожиданных значениях.

Стабильная сортировка

Сортировка нестабильная. То есть при сортировке массива [[0,1], [1,0], [0,2]] по первому элементу вложенных массивов никто не гарантирует, что [0,1] и [0,2] будут идти друг за другом именно в таком порядке. Результатом может оказаться как [[0,1], [0,2], [1,0]] , так и [[0,2], [0,1], [1,0]] .

Почему? Потому что в PHP нет функций для стабильной сортировки, а внутри библиотеки используется usort. Теоретически можно сделать сортировку стабильной, как в оригинальном LINQ, но нужно ли это? За стабильность всем придётся платить временем выполнения и расходуемой памятью. Я решил, что, раз уж следуем «пути PHP», то и нестабильность должна быть такой же, как в самом PHP.

Прочее

Покрытие юнит-тестами — практически 100%.

Лицензия — упрощённая BSD (двухпунктовая).

Требования — PHP 5.3.

Сравнение с другими библиотеками

Для наглядности добавил в таблицу ещё и библиотеки для JavaScript. Их сравнение будет в отдельной статье.

Легенда как в Википедии, но с дополнительным значением:

  • красный — ни в какие ворота
  • жёлтый — третий сорт не брак
  • зелёный — самое то
  • голубой — офигительно

Спасибо мне

Работал на халяву, денег никто не даст. Если чувствуете приступ щедрости, можете просто проголосовать за эти фичи в PHP и PHPStorm. Авось заметят и использовать библиотеку станет приятнее.

голоса
Рейтинг статьи
Ссылка на основную публикацию