過去完成式

句型

had + 過去分詞

例句:

  • Mr. Chen had studied English before he moved to San Francisco. (陳先生搬到舊金山之前已學了英文)
  • Had Mr. Chen studied English before he moved to San Francisco? (陳先生搬到舊金山之前已學了英文嗎?)
  • Mr. Chen had not studied English before he moved to San Francisco. (陳先生搬到舊金山之前沒有學英文)

用法之一:發生在過去某個動作或某一特定時間之前的動作

過去完成式係用來表示發生在過去某個動作之前的動作;它亦可用來表示發生在過去某一特定時間之前的動作。換言之,在過去兩個先後發生的動作中,發生在前的動作用過去完成式,而發生在後的動作用過去簡單式。

例句:

  • I had never seen such a beautiful beach before I went to Pescadores. (在我去澎湖之前,我從未看過這麼美麗的海灘)
  • I did not have any money because I had lost my wallet. (我身無分文,因為我遺失了錢包)
  • Sam knew Bangkok so well because he had visited the city several times. (山姆對曼谷瞭若指掌,因為他已去過該市好幾趟)
  • Had Cindy ever studied Thai before she moved to Thailand? (辛蒂搬到泰國之前有學過泰語嗎?)
  • Patricia had never been to a concert before last night. (在昨晚之前,派翠西亞從未聽過演唱會)
  • We were not able to get a hotel room because we had not booked in advance. (我們沒有飯店房間可住,因為我們事先沒有預訂)
  • A: Had you ever visited the U.K. before your trip in 2011? (在 2011 年的英國行之前,你有去過英國嗎?)
    B: Yes, I had been to the U.K. once before. (有,我之前去過一次)

用法之二:從過去持續到過去另一個動作的時間 (非進行式動詞)

對於非進行式動詞及若干混合動詞的非進行式用法,我們使用過去完成式來表示某事發生在過去且一直持續到過去的另一個動作。

例句:

  • We had had that car for ten years before it broke down. (那部車在發生故障之前,我們已經開了十年)
  • By the time Allen finished his studies, he had been in New York for over eight years. (到了艾倫完成他的學業,他已在紐約待了超過八年)
  • They felt bad about selling the house because they had owned it for more than forty years. (他們對於賣掉那間房子感到難過,因為那房子他們已住了超過四十年)

雖然上述的過去完成式用法通常僅限於非進行式動詞及若干混合動詞的非進行式用法,但 “live”、”work,”、”teach” 和 “study” 等動詞雖不是非進行式動詞,但有時也這樣用。

重點提示:過去完成式與特定時間

與現在完成式不同的是,雖然過去完成式亦可與時間副詞或副詞片語連用,但這通常不必要。

例句:

  • She had visited her American relatives once in 2008 before she moved in with them in 2012. (她在 2012 年搬去和她的美國親戚一塊住之前,僅在 2008 年拜訪過他們一次)

此外

如果過去完成式的動作是發生在某一特定時間,那麼當句中使用了 “before” 或 “after” 時,我們可以使用過去簡單式來代替過去完成式,因為 “before” 和 “after” 已告訴我們那個動作先發生,所以使不使用過去完成式都可以。因此,下面兩句都對。

例句:

  • She had visited her American relatives once in 2008 before she moved in with them in 2012.
  • She visited her American relatives once in 2008 before she moved in with them in 2012.

然而

如果過去完成式不是指發生在某一特定時間的動作,那麼就一定要使用過去完成式。以下面兩句為例,過去完成式是指缺乏某種經驗而非發生在某一特定時間的動作,因此不可使用過去簡單式。

例句:

  • Katie had never seen a polar bear before she moved to Canada. (凱蒂在搬到加拿大之前從未看過北極熊) (正)
  • Katie never saw a polar bear before she moved to Canada. (誤)

副詞的位置

always, usually, only, never, ever, still, just 等副詞通常位在助動詞 had 的後面,即位在 had 和過去分詞之間。

例句:

  • Daniel had previously studied Japanese before he moved to Japan. (丹尼爾在搬到日本之前已先學了日語)
  • Had Daniel previously studied Japanese before he moved to Japan? (丹尼爾在搬到日本之前已先學了日語嗎?)

主動態/被動態

例句:

  • Tim had repaired many cars before he received his mechanic’s license. (提姆在取得機工執照之前已修理過許多車輛) - 主動態
  • Many cars had been repaired by Tim before he received his mechanic’s license. (在提姆取得機工執照之前,已有許多車輛被他修理過) - 被動態

Q:can 和 able to 以及 can’t 和 unable to 的用法有何不同呢?

A:Can 和 be able to 都是表示能力,意為「能,會」,它們有時是同義詞,可以互換,但有時卻不行。同樣地,它們的否定詞 can’t 和 am not/aren’t/isn’t able to 或 am/are/is unable to 也是有時可以互換,有時則不行。例如:

  • I can drive. (我會開車)
    = I am able to drive.
  • I can’t drive. (我不會開車)
    = I am not able to drive.
    = I am unable to drive.

Can 的過去式 could 係表示過去能做某事或會做某事,而 could 的否定詞 couldn’t 則表示過去不會做某事,即缺乏做某事的能力。同樣地,could 和 was/were able to 以及 couldn’t 和 wasn’t/weren’t able to 或 was/were unable to 亦是有時可以互換,有時則不行。例如:

  • I could swim. (以前我會游泳)
    = I was able to swim.
  • I couldn’t swim. (以前我不會游泳)
    = I wasn’t able to swim.
    = I was unable to swim.

既然 can 和 be able to 的意思相同,那麼該使用那一個比較適當呢? 在非正式場合,尤其在口說英語中,一般都使用 can (亦適用於 can’t, could 和 couldn’t;以下的敘述亦同),而 be able to (亦適用於 am/are/is/was/were able to, am not/aren’t/isn’t/wasn’t/weren’t able to 或 am/are/is/was/were unable to;以下的敘述亦同) 則用在比較正式的場合,不是很適合用於日常生活的情況中。

從上述可知,can 和 be able to 可以互換的情況是發生在現在式和過去式的句子中。若是未來式、現在完成式和過去完成式,那麼它們就不能互換了,因為 can 在這些時式中並非表示能力;所以,在未來式、現在完成式和過去完成式中僅能使用 be able to。例如:

  • He’ll be able to speak really good English by the end of the year. (到了年底,他將會說一口真的很好的英文)
  • My six-year-old son has been able to read for two years. (我六歲兒子的閱讀能力已持續兩年了)
  • I thought he had been able to swim. (我認為他一定會游泳)

最後值得一提的是,unable to 比 not able to 來得正式 (formal) 一些。

Q:我們不能說 I have met him five years ago.,而必須說 I have met him before.。為什麼 before 可以跟現在完成式連用,而 ago 卻不行呢?

A:before 和 ago 皆意為「以前」,但前者指的是「現在之前的任何時間」(亦即指過去某個不確定的時間),而後者是指「現在之前的某個確定的時間」。所以,before 可以跟現在完成式連用,而 ago 只能用於簡單過去式。例如:

  • I know that guy. I’ve met him somewhere before. (我知道那個人。我以前在某個地方見過他)
  • Have you been here before? (你以前有來過這裡嗎?)
    No, I’ve never been here before. This is my first time. (沒有,我以前從未來過這裡。這是第一次。)
  • Your mother phoned five minutes ago. Can you phone her back? (你母親 5 分鐘前來電。你可以給她回電嗎?)
  • I saw her for the first time at the National Palace Museum some twenty years ago. (我約 20 年前在國立故宮博物院首次見到她)

before 通常跟現在完成式連用,但也可用於簡單過去式。

  • I know that guy. I met him somewhere before.
  • Were you here before?
    No, I was never here before. This is my first time.
  • We were all students before. (我們以前都是學生)

ago 所指的時間都是從現在開始往以前推算,但 before 所指的時間除了上述也是從現在開始往以前推算之外,還可指從過去某個時間點往更早之前推算的時間。所以,當我們要表示比 ago 更早的時間時,我們只能用 before (that) 或 earlier 或 previously,而不能用 ago。在這種句子中,ago 用簡單過去式,而 before 用過去完成式。例如:

  • My grandfather died five years ago; my grandmother had already died three years before (that)/previously/earlier. (我祖父 5 年前過世,而我祖母在那之前 3 年就已經過世了 — 亦即祖母是在 8 年前過世)
  • I met my ex-girlfriend at a hotel in Bangkok in December 2006 when she told me that she had got married four years before. (2006 年 12 月我在曼谷一家飯店遇見我前女友,當時她告訴我,她在那之前 4 年就已結婚了 — 亦即她在 2002 年結婚)
  • Last year I went back to my hometown that I had left ten years before. (去年我回到暌違 10 年的故鄉 — 亦即我在 11 年前離開故鄉)