Смешанный тип: Mixed Conditionals | Смешанный тип conditionals
Mixed Conditionals. Смешанный тип условных предложений ‹ engblog.ru
Условные предложения – очень интересная тема для тех, кто желает освоить все тонкости английского языка и уметь выразить все свои «условные» мысли легко и правильно. Согласитесь, что говорить о том, что было, есть или будет – это только основа основ. Люди же с продвинутым английским хотят не медлить и не задумываться о том, как сказать, что было бы, если бы вы поступили иначе, или что случится, если вы чего-то, например, не сделаете. То есть они хотят уметь правильно совмещать условные предложения разных типов.
В нашем блоге ранее было опубликовано несколько статей на тему условных предложений, однако о так называемом четвертом (смешанном) типе условных предложений было сказано совсем немного. Именно о нем и пойдет речь в этот раз. Прежде чем ознакомиться с информацией о Mixed Conditionals (смешанном типе условных предложений), предлагаем вам вспомнить основные типы и правила употребления условных предложений в целом.
- Если вам легче запоминать информацию визуально, то предлагаем также таблицу на условные предложения.
Иногда событие, о котором идет речь в главном предложении, и условие придаточного предложения могут относиться к разным моментам времени: условие – к прошедшему, а следствие – к настоящему/будущему или наоборот. В таком случае мы имеем дело со смешанным типом условных предложений. И мы можем использовать различные комбинации времен глаголов в главном и придаточном предложениях, те, которые больше всего подходят по смыслу.
Таким образом, в грамматике принято выделять три типа смешанных условных предложений:
- В первом типе смешанных условие относится к прошлому (Type 3), а следствие – к настоящему/будущему (Type 2).
Данный тип образуется по следующей схеме:
Условие Результат If + Past Perfect / Past Perfect Continuous, would + bare infinitive Все станет понятно на примерах:
Past – Present
If he had won a lot of money yesterday, he would buy this yacht. – Если бы вчера он выиграл много денег, он бы купил эту яхту. (но он не выиграл в прошлом и не купил яхту сейчас)
If my mother had taken English in the university, she would have more offers on her job. – Если бы моя мама учила английский в университете, то у нее было бы больше предложений по работе. (но она не учила английский, и теперь ей поступает мало предложений по работе)
If my relatives had been born in Italy, I wouldn’t need to get a visa to study there. – Если бы мои родственники родились в Италии, мне не нужно было бы получать визу, чтобы учиться там. (но мои родственники не из Италии, поэтому мне нужно получить визу для учебы сейчас)
If Jim had taken his painkillers two days ago, he would be fine now. – Если бы Джим выпил обезболивающие два дня назад, он бы был здоров сейчас.
Past – Future
If our teacher had given us homework yesterday, I would be doing
it tomorrow. – Если бы наша учительница дала нам домашнее задание вчера, я бы делала его завтра. (но она не задала домашнее задание, и я не собираюсь его делать завтра)If Joe had gotten that job offer, he would be packing his suitcase to London. – Если бы Джо получил то предложение на работу, то он бы паковал свой чемодан в Лондон. (но он не получил предложение на работу и не пакует свои вещи)
- Во втором типе смешанных предложений условие, как правило, не относится к конкретному времени (Type 2), а следствие имеет отношение к прошлому (Type 3).
Данный тип образуется по следующей схеме:
Условие Результат If + Past Simple / Past Continuous, would + have + Past Participle Примеры:
If she were more concentrated, she would not have made so many mistakes in that test. – Если бы она была более сосредоточенной, она не сделала бы столько ошибок в тесте. (но она рассеянная и наделала ошибок в тесте в прошлом)
Still John had taken the trouble to buy medications for me. He would not have done that if he didn’t like me at all. – Все-таки Джон потрудился и купил мне лекарства. Он бы этого не сделал, если бы я ему совсем не нравилась.
Условие может относиться и к будущему:
If Mr. Smith weren’t going on his holiday next month, he would have participated in the conference. – Если бы мистер Смит не уезжал на отдых в следующем месяце, он бы принял участие в конференции.
- Еще один возможный вариант смешанных предложений – соотношение второго и первого типа условных предложений.
Данный тип образуется по следующей схеме:
Условие Результат If + Past Simple / Past Continuous, will + bare infinitive Например:
If she got back late last night, she won’t come to school today. –
Если она пришла поздно вчера, она не придет в школу сегодня.
Подведем итог всего вышесказанного в форме таблицы, в которой указаны основные правила употребления смешанного типа условных предложений:
Тип | Придаточное предложение (условие) | Главное предложение (результат) |
---|---|---|
Type 3 + Type 2 | If + Past Perfect / Past Perfect Continuous If you had called me yesterday, | would/could/might + bare infinitive I wouldn’t be angry at you today. |
Type 2 + Type 3 | If + Past Simple / Past Continuous If I were a sushi-maker, | would/could/might + have + Past Participle I would have made sushi for the party last week. |
Type 2 + Type 1 | If + Past Simple / Past Continuous If nobody bought milk yesterday, | will + bare infinitive I won’t have cereal for breakfast. |
Кроме нулевого и основных трех типов условных предложений в английском языке существует еще и смешанный тип. Мы его используем, когда условие и следствие выражены разными временами. Его следует употреблять, когда, к примеру, условие было в прошлом, и оно повлияло на будущее, или же наоборот, когда условие в настоящем повлияло на прошлые действия и ситуации. Смешанный тип не так часто встречается в речи, тем не менее его надо знать. Надеемся, что теперь у вас не осталось пробелов в знаниях, относящихся к теме условных предложений!
- А теперь ваши знания во всех типах условных предложений можно проверить с помощью нашего теста.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Условные предложения смешанного типа. Mixed Conditionals
Если бы вы научились в школе использовать условные предложения смешанного типа, вам бы не пришлось читать эту статью.
If you had learned how to use mixed conditions at school, you wouldn’t need to read this article.
Но ничего страшного, сейчас мы все научимся.
К концу этой статьи вы будете легко формировать такие предложения. Вы будете поражать своих собеседников своими блестящими знаниями.
Если бы в жизни все было бы так просто: пошел дождь, светит солнце, все будет хорошо… Но нам приходится сталкиваться с разными гипотетическими ситуациями: если бы я выиграл лотерею, я бы … И для того, чтобы выражать все наши мысли, ожидания, предположения нам не обойтись без условных предложений смешанного типа.
Условные предложения смешанного типа — это предложения, в которых задействованы разные времена, они нам помогают двигаться во времени.
Как только вы видите ситуацию, где пересекаются разные времена в одном предложении (прошлое с настоящим или будущим) — вы имеете дело с условными предложениями смешанного типа.
Давайте рассмотрим такую жизненную ситуацию.
Если бы он был красив, я бы давно вышла за него замуж.
If he were handsome, I would have married him long ago.
Если бы он был умен, я бы давно вышла за него замуж.
If he were smart, I would have married him long ago.
Если бы он был богат, я бы давно вышла за него замуж.
If he were rich, I would have married him long ago.
Спустя 20 лет …
20 years later…
Если бы я не была такой придирчивой тогда, я бы сейчас была замужем.
If I hadn’t been so picky then, I would be married now.
Если вы понимаете, о чем идет речь, я вас поздравляю, значит, вы уже знакомы с условными предложениями смешанного типа.
Нам осталось только рассмотреть правила и закрепить их на других примерах.
Условные предложения смешанного типа — это когда вы используете Conditional II в одном предложении и Conditional IIІ во втором.
Вы уже забыли, что это Conditional II и Conditional IIІ?
Давайте посмотрим на таблицу.
Придаточное предложение условия “if” (если) | Главное предложение | Примеры | |
Conditional II — настоящие гипотетические ситуации в настоящем (нереальные) | if + Past Simple (касается настоящего/ будущего) | would+infinitive | If I won the lottery, I would buy a fast car. — Если бы я выиграла в лотерею, я бы купила скоростную машину. |
Conditional III — прошедшие гипотетические ситуации в прошлом (нереальные) | if + Past Perfect (касается прошлого) | would have + Past participle | If I had won the lottery last year, I would have bought a fast car long ago. — Если бы я выиграла в лотерею в прошлом году, я бы давно купила себе скоростную машину. |
Мы рассмотрели отдельно Conditional II и Conditional III.
А в условных предложениях смешанного типа Conditional II и Conditional III смешиваются.
Название говорит само за себя.
Два самых распространенных варианта условных предложениях смешанного типа:
- 1) If + Conditional III (прошлое), Conditional II (настоящее/будущее)
- If + Past Perfect + ( would+infinitive)
- 2) If+Conditional II (настоящее/будущее), Conditional III (прошлое)
- If + Past Simple + (would have + Past participle)
А тепер примеры:
If + Conditional III (прошлое), Conditional II (настоящее/будущее) | If+Conditional II (настоящее/будущее), Conditional III (прошлое) |
If + Past Perfect + ( would+infinitive) | If + Past Simple + (would have + Past participle) |
If Sue hadn’t fallen off her bike, she’d be champion now. Если бы Сью не упала с велосипеда, она бы сейчас была чемпионкой | If I weren’t so busy, I would have taken a few days off work last week. Если бы я не был так занят, я бы взял несколько выходных дней на прошлой неделе. |
If I had passed my driving test, I would be driving to London next week. Если бы я сдал тест на вождение, я бы поехал в Лондон на следующей неделе. | If I weren’t flying on holiday next week, I would have accepted the new project at work. Если бы я не летал в отпуск на следующей неделе, я бы принял новый проект на работе. |
If you hadn’t wasted your money, you would be able to afford a new dress. Если бы вы не потратили свои деньги впустую, вы могли бы позволить себе новое платье. | If the tickets weren’t so expensive you would have gone to the cinema last night. Если бы билеты не были такими дорогими, ты бы пошел в кино прошлым вечером. |
If he hadn’t drunk so much whisky, he wouldn’t feel so bad now. Если бы он не выпил столько виски, он бы не чувствовал себя так плохо сейчас. | If I were fluent in English, I would have gone to London with you yesterday. Если бы я свободно говорил по-английски, я бы вчера уехал с тобой в Лондон. |
If I had got on that plane,I would be in Fiji right now. Если бы я сел в этот самолет, я был бы на Фиджи прямо сейчас. | If I were more athletic, I would have won the first prize last week. Если бы я был более спортивным, я бы выиграл первый приз на прошлой неделе. |
If he hadn’t quit his job, he would be a millionaire now. Если бы он не уволился с работы, он был бы миллионером сейчас. | If I were smarter, I would have never been so honest with him. Если бы я была умнее, я бы никогда не была так откровенна с ним. |
If you had studied foreign languages at school, you would travel all over the world now. Если бы вы изучали иностранные языки в школе, вы бы сейчас путешествовали по всему миру. | If Peter were rich, he would have bought a flat in London long ago. Если бы Питер был богат, он бы давно купил квартиру в Лондоне. |
If I had woken up earlier, I would be at work already. Если бы я проснулся раньше, я был бы на работе уже. | If I didn’t have an important meeting tomorrow, I would have gone out dancing tonight. Если бы завтра у меня не было важной встречи, я бы пошла танцевать сегодня вечером. |
Условные предложения If — Смешанный тип
IF CLAUSES / УСЛОВНЫЕ ПРЕДЛОЖЕНИЯ (Смешанный тип)
c условных предложений указывают нам на возможное условие и его вероятный результат. Это означает, что ожидаемые действия зависят от условия. Условные предложения состоят из двух частей. До сих пор мы знали, что две части или предложения в условных предложениях имеют одинаковое время.
В некоторых случаях нереальных условных предложений смешаны. А именно, время в Если-условие не совпадает со временем в Основная причина . Когда это так, эти предложения или пункты называются смешанными типами или смешанными условными предложениями .
Есть два основных типа смешанных условных предложений.
ФОРМЫ:
Коротко;
- Форма: ЕСЛИ + ТИП 3 + ТИП 2 (ПРОШЕДШЕЕ СОСТОЯНИЕ + НАСТОЯЩИЙ РЕЗУЛЬТАТ)
- Форма: ЕСЛИ + ТИП 2 + ТИП 3 (НАСТОЯЩЕЕ СОСТОЯНИЕ + ПРОШЛЫЙ РЕЗУЛЬТАТ)
Тип | Если пункт (условие) | Главное предложение (результат) | ||
Смешанный тип (1) |
Если + | Past Perfect Past Perfect Continuous (PAST) |
Тема + | было бы могло бы + V1 могло бы (НАСТОЯЩЕЕ) |
Смешанный тип (2) |
Если + | Past Continuous Simple Past (НАСТОЯЩЕЕ) |
Тема + | будет может + HAVE + V3 может (ПРОШЕДШЕЕ) |
Использование смешанного типа 1: (от ПРОШЛОГО к НАСТОЯЩЕМУ) (ТИП 3 + ТИП 2)
Если пункты Смешанного типа 1, используется для соединения прошлого и настоящего. Другими словами, время — это прошедшее время (совершенное прошедшее время) в «предложении If» и настоящее (модальное настоящее) в «главном предложении».
Существует нереальное состояние в прошлом и его вероятный результат в настоящем.
Примеры:
- Если бы он, будучи президентом, построил систему метро, сегодня люди не теряли бы много времени в пробках.
- Если бы она сдала экзамен, ей не пришлось бы сейчас учиться.
- Если бы я родился в Англии, я мог бы очень хорошо говорить по-английски.
- Если бы мы не продали свой дом, нам бы не пришлось сейчас сидеть в съемном доме.
- Если бы она осталась с матерью, она не чувствовала бы себя такой одинокой.
- Если бы Билли позвонил мне, я бы поговорил с ним сейчас.
- Если бы пассажир поторопился, он бы успел на поезд сейчас.
Использование смешанного типа 2: (от НАСТОЯЩЕГО к ПРОШЛОМУ)
Если пункты смешанного типа 2, используется для соединения настоящего и прошлого. Другими словами, время — это настоящее (простое прошедшее время) в «предложении If» и прошедшее время (модальное совершенное) в «главном предложении».
Существует прошлый результат текущего состояния.
Примеры:
- Если бы он был моим настоящим другом, он позвонил бы мне вчера по номеру .
- Если бы мы увидели его снова, мы сказали бы ему правду.
- Если бы у I было много денег, я бы не ходил слишком много и я возьму такси до офиса.
- Если бы вы были умными, вы выиграли бы университетский экзамен в прошлом году.
- Если бы она доверяла ему, она вышла бы за него замуж .
- Если бы вы не боялись меня , вы не пытались бы лгать мне.
- Если бы Marry понравилась Susan, она пошла бы на вечеринку по случаю дня рождения прошлой ночью.
ПРИМЕЧАНИЯ:
Хотя мы говорим, что в основном используются два типа смешанных условных предложений, мы можем видеть и другие типы смешанных условных предложений (эти структуры отличаются друг от друга с точки зрения их значений). Не забывайте, что все смешанные условные предложения имеют два времени. Одно из них — простое прошедшее или прошедшее продолженное время, а другое — прошедшее совершенное время.
Просто используя выражения времени, мы можем изменить значение предложений. Они даны в предложениях ниже.
Примеры:
- Если бы мы решили какие проекты применить вчера, мы бы встретились с вами завтра. (из ПРОШЛОГО в БУДУЩЕЕ)
- Если бы ты не был успешным учеником, я бы не взял тебя в кино на следующей неделе в качестве награды. (от НАСТОЯЩЕГО к БУДУЩЕМУ)
- Если бы они не были бы , прибывшими к нам на следующей неделе, Мы бы присоединились к нам для приятного путешествия. (из БУДУЩЕГО в ПРОШЛОЕ)
- Если бы Дэнни пришел с нами на концерт сегодня вечером, мы были бы очень счастливы. (из БУДУЩЕГО в НАСТОЯЩЕЕ)
Для условных выражений — тип 0, нажмите здесь
Для условных выражений — тип 1, нажмите здесь
Для условных выражений — тип 2, нажмите здесь
Для условных выражений — тип 3, нажмите здесь
Новый смешанный псевдотип — PHP 8.0 • PHP.Watch
смешанный
— псевдотип, добавленный в PHP 8, который передает, что тип параметра/возврата/свойства может быть любого типа. смешанный тип
включает все скалярные типы в PHP, null
, все объекты класса, вызываемый
и даже ресурсный
.
смешанный
эквивалентен типу Union:
string|int|float|bool|null|массив|объект|вызываемый|ресурстип, когда параметры, возвращаемые значения и свойства класса могут быть любого типа.
класс Пример { общедоступный смешанный $exampleProperty; публичная функция foo (смешанный $ foo): смешанный {} }
смешанный
представляет любой тип, который может обрабатывать PHP, поэтому вы не можете привести переменную к смешанному
, потому что это просто не имеет смысла.
$foo = (смешанный) $bar;
Кроме того, по тем же причинам отсутствует функция is_mixed()
.
Функции gettype()
и get_debug_type()
никогда не будут возвращать смешанный
в качестве типа переменной.
Потому что смешанный
представляет все типов, смешанный
нельзя использовать в объединении с другими типами:
function (mixed|FooClass $bar): int|mixed {}
Оба указанных выше типа объединения не разрешены и приведут к фатальной ошибке:
Неустранимая ошибка: смешанный тип может использоваться только как автономный тип в ... в строке ...
Когда параметр функции или свойство класса не имеет явного объявленного типа, теперь предполагается, что тип смешанный
.
Будьте внимательны, когда добавляете
смешанный тип
со всем вашим существующим кодом; В PHP 8 есть Union Types, которые могут подойти лучше, потому что Union Types позволяют вам быть более конкретными.
Для возвращаемых типов отсутствие явного возвращаемого типа равно mixed|void
.
Однако обратите внимание, что вы не можете объявить
смешанный|недействительный
в качестве возвращаемого типа, потому чтосмешанный
не допускается в типе объединения.
Когда метод класса, тип возвращаемого значения или тип свойства переопределяются подклассом, соблюдается принцип подстановки Лискова.
Контравариантность:
смешанные типы параметров
Типы параметров функций могут быть «расширены» в дочернем классе или реализации интерфейса, поскольку расширенный тип по-прежнему выполняет контракт интерфейса/родительского класса. Это означает, что параметры дочернего класса могут объявлять тип с Union Type, который включает в себя больше типов, или имя класса, являющееся родителем текущего класса.
Когда тип параметра объявлен как смешанный
, это практически предотвращает дальнейшую контравариантность, поскольку смешанный
включает все типов, с которыми работает PHP. Если возможно, всегда выбирайте более конкретные типы , потому что после того, как вы пометите тип параметра как смешанный
в общедоступном API, все дочерние классы должны быть способны работать со смешанными типами.
Ковариация:
смешанный
типы возвращаемого значения Если метод родительского класса объявил тип возвращаемого значения, отличный от смешанный
, дочерним классам не будет разрешено объявлять смешанный
, поскольку это расширяет область возвращаемого значения, тем самым нарушая LSP.
класс А { публичная функция foo(): смешанная {} } класс B расширяет A{ публичная функция foo(): void {} }
Вышеприведенное приведет к фатальной ошибке:
Фатальная ошибка: Объявление B::foo(): void должно быть совместимо с A::foo():mixed
Это потому, что mixed
не включить пустота
тип . Если возвращаемый тип явно не объявлен, предполагается, что он имеет значение mixed|void
.
Допускаются все следующие декларации:
класс А { публичная функция foo() {} общедоступная панель функций () {} публичная функция baz(): смешанная {} } класс B расширяет A{ публичная функция foo(): смешанная {} общедоступная панель функций(): void {} общедоступная функция baz(): строка {} }
-
B::foo
: Разрешено: сужает предполагаемый тип возвращаемого значенияmixed|void
дляA::foo
. -
B::bar
: Разрешено: сужает предполагаемый тип возвращаемого значенияmixed|void
дляA::bar
. -
B::baz
: Разрешено: сужает объявленныйсмешанный тип
.
Инвариантность:
смешанный
типы свойств Если тип свойства объявлен как смешанный
, этот тип нельзя опустить или вообще изменить.
PHP поддерживает тип псевдовозврата void
, чтобы указать, что функция ничего не возвращает. Это эквивалентно отсутствию оператора return
или return ;
без указания явного значения.
void
тип и смешанный
не могут быть в союзе. Далее смешанный
не включает пустота
.
Не допускается объявлять смешанный тип
как обнуляемый, потому что смешанный
включает null
.
Все следующие объявления не допускаются:
function foo(mixed|null $foo) {} функция foo(?смешанный $foo) {} функция foo($foo): смешанная|null {} функция foo($foo): ?mixed {}
Все вышеприведенные объявления вызовут фатальную ошибку:
Фатальная ошибка: смешанный тип можно использовать только как отдельный тип в ... в строке ...
Практическое использование
Многие внутренние функции PHP принимают различные типы, которые теперь можно объявить с типом , смешанным с
. Однако для пользовательских функций часто лучше использовать определенный тип или Union Type.
Такие функции, как var_dump
или get_debug_type()
, могут объявлять свои параметры как смешанный
, потому что эти функции принимают любого типа по определению.
Если вы объявляете параметр/тип возвращаемого значения/свойство класса как смешанный тип
, помните, что смешанный
включает такие типы, как ресурс
и вызываемый
, которые нелегко хранить, сериализовать, очищать или отображать.
Большинство пользовательских функций, которые должны «принимать что-либо», например, функции регистрации, лучше использовать с типом объединения, например string|int|float|bool|null|object|array
.
Обратная совместимость
смешанный
мягко зарезервирован, начиная с PHP 7. До PHP 8 технически возможно объявить класс с именем смешанный
, и это не вызовет никаких ошибок, предупреждений или уведомлений. . Стандарт PHPDoc широко использовал смешанный
в качестве объявления типа, поэтому маловероятно, что даже самая дикая кодовая база объявляет класс с именем смешанный
.
Попытка объявить класс с именем смешанный
в PHP 8 приводит к следующей ошибке:
Неустранимая ошибка: нельзя использовать «смешанный» в качестве имени класса, поскольку он зарезервирован в ... в строке ...
Polyfill
Невозможно полифиллировать эту функцию потому что это внутренний тип.