混合条件句

B2 Mixed conditionals 44 / 50

概要

混合条件句连接两个不同的时间:if 条件从句和结果从句指向不同的时刻。做法是从第二条件句和第三条件句里各取相配的一半组合起来——一个分句说过去,另一个说现在。

规则

“纯”条件句里两个分句处在同一个时间框架内:

  • 第三条件句 = 过去的条件 -> 过去的结果(想象中的过去):If I had studied, I would have passed.
  • 第二条件句 = 现在的/不真实的条件 -> 现在的结果:If I knew the answer, I would tell you.

当原因和结果发生在不同时间时,混合条件句就会把这两种条件句交叉组合起来。常见的有两种类型。

A 型——过去的条件 -> 现在的结果。 过去(不)真实发生的事,如今仍然影响着现在的情况。

If 从句(过去)结果从句(现在)
if + 过去完成时would / could / might + 动词原形

If I had taken that job, I would be richer now.(我当初没接受那份工作,所以我今天没有变得更富有。)

B 型——现在的/一般性的条件 -> 过去的结果。 关于现在的一个永久性事实或一般性真理,解释了想象中的过去结果。

If 从句(现在/一般性)结果从句(过去)
if + 一般过去时would / could / might + have + 过去分词

If I weren’t so shy, I would have spoken to her at the party.(我是个害羞的人——所以当时才保持了沉默。)

诀窍始终一样:先判断哪个分句说的是过去,哪个说的是现在,再为每个分句选用相应的形式。

形式与结构

类型If 从句结果从句含义
A 型:过去 -> 现在if + had + 过去分词would + 原形过去的原因,现在的结果
B 型:现在 -> 过去if + 一般过去时would have + 过去分词现在的原因,过去的结果

可以把 would 换成 could(能力/可能性)或 might(不确定),分句的顺序也可以自由调换——只要 if 从句放在前面时加上逗号:

  • I would be fluent now if I had kept practising.(不加逗号,结果在前)
  • If I had kept practising, I would be fluent now.(加逗号,if 从句在前)

当条件即使成立也不会改变结果时,把 if 换成 even if——结果依然不变,常常搭配 still:Even if I had apologised, she would still be angry with me.

B 型现在时分句里用 be 时,正式英语所有人称都倾向用 were:If he were more careful, he wouldn’t have lost it.

B 型的 if 从句里也可以用 could——它是 can 的一般过去时形式,不是 would 形式:If I could drive, I would have taken you to the station.

例句

English说明
If she had set an alarm, she wouldn’t be late right now.A 型:过去未做的事 -> 现在的后果。
If we had booked earlier, we would be on the beach today.A 型:过去错过的动作,现在的遗憾。
If I hadn’t missed the train, I would be at the office by now.A 型:hadn’t + 现在的 would be。
If they weren’t vegetarians, they would have ordered the steak.B 型:永久性事实 -> 过去的选择。
If he spoke Italian, he would have understood the menu.B 型:现在的一般能力 -> 过去的结果。
If I were a morning person, I would have come to the early class.B 型:正式用法中所有人称都用 were。
You could be a doctor now if you had finished medical school.A 型中用 could 表能力。
If she didn’t hate flying, she might have joined us in Rome.B 型中用 might 表不确定的过去结果。

常见错误

  • If I had taken that job, I would have been richer now. -> …I would be richer now. ——结果是现在(此刻)的,所以要用 would + 原形,不用 would have。
  • If I am not so shy, I would have spoken to her. -> If I weren’t so shy… ——现在的/一般性的条件要用一般过去时(正式用法用 were),不用现在时。
  • If I would have known, I would be upset. -> If I had known… ——if 从句里绝不能放 would。
  • If she had been taller, she would have been a model now. -> …she would be a model now. ——把过去的 if 从句和表示现在的 now 混用时,要用 would be,不用 would have been。
  • If he weren’t lazy, he would finish it yesterday. -> …he would have finished it yesterday. ——过去的结果要用 would have + 过去分词。

学习提示

  • 留意时间标志词:结果从句里出现 now、today、currently 这类词,指向现在的结果(A 型);yesterday、last week、at the party 则指向过去的结果(B 型)。
  • 用你已经学过的两种条件句来搭建:取第三条件句的 if 那一半和第二条件句的结果那一半组合成 A 型,或者反过来组合成 B 型。
  • 先判断每个分句各自的时间,再选用形式——不要出于习惯让两半“保持一致”。
  • Would have + been = 过去的状态;would be = 现在的状态。判断方法是问自己:“这个结果是在那时成立,还是在现在成立?”