Help us understand the problem. What is going on with this article?

Swiftで学ぶ英文法: 現在分詞と過去分詞

More than 3 years have passed since last update.

Objective-Cの時代から、コードを読んだり命名したりするときに、そこそこの英語力、英文法力を要求される場面が多いと思います。(かつてObjective-Cで学ぶ英文法というのを社内LT会で発表しました。)SwiftのAPI Design Guidelinesを読んでみて、一層英文法力の必要性を感じたので、自分の理解のためにも「Swiftで学ぶ英文法」というテーマで書いてみようと思います。

Swiftのメソッドにはインンスタンス自身に変更を加えるもの(mutating)と、自身には変更を加えずに新しいインスタンスを作って返すもの(nonmutating)が対になって存在するものがあります。その場合、演算が動詞で表されるならば、mutatingなメソッドに命令形を使い、nonmutatingなメソッドに過去分詞形(〜ed)または現在分詞系(〜ing)を使います。

例えば配列のソート sort() と、要素追加 append(_:) は以下のようになっています。

Mutating Nonmutating
x.sort() x.sorted()
x.append(y) x.appending(y)

では過去分詞と現在分詞の使い分けはどうすればいいかというと、動詞に直接目的語をとるかどうかで決まります。sortは直接目的語を取らないので過去分詞にしてsortedappendは引数yという直接目的語を取るので現在分詞にしてappendingとなります。

英文として読めるようにしてみるとこんな感じでしょうか。

x.sort()
// x, sort (yourself).
// x、自分をソートして。
x.sorted()
// x, (return your copy which is) sorted.
// x、ソートされた自分のコピーを返して。
x.append(y)
// x, append y (to yourself).
// x、自分にyを追加して。
x.appending(y)
// x, (return your copy) appending y.
// x、yを追加した自分のコピーを返して。
Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away