TransWikia.com

Swift の のような記法はいつ使うものですか?

スタック・オーバーフロー Asked on January 5, 2021

Swift に限らずですが <T> のような ジェネリック型? の意味がさっぱりわからないのですが いつ使うのですか?

One Answer

配列(Array)がもっともわかりやすい例だと思います。

Swiftは静的型付けですので、型を書いてやらなければなりません(一部型推論が効くので型を書くことを省略できる場合もあります)。

ここで配列を定義したいとします。
配列はArrayというです。
はい!型が決まったのでめでたしめでたし!とはなりません

配列というものは内部にデータを持ちます。このデータの型を決めてやることが重要となります。

内部にInt型しか持たない配列を作るとなるとこの型は Array<Int>です。

でも、ちょっと待ってください。別のArray型の変数はIntの集合ではなくDoubleの集合として定義したいかもしれません。そういうときの型は Array<Double> となります。

さて、上記は、Array型を使う側の目線で書いています。Array型自体を作る人はどのようにIntでもいいしDoubleでもいいしというようなことをプログラム上で表現すればよいのでしょうか? ここで登場するのがジェネリクスです(多くの場合は <T> として表されていますが、Tでなくてもかまいません)。Array型自体を作る人は、ジェネリクスとして型はなんでもこい!ということを表現しておくのです。

ジェネリクスの <> で囲まれた部分は Type Parameters です。

Hoge<T>Hoge<Int> は、関数でいうところの、仮引数と実引数の対応と似たようなものと考えることができます。

コメントを受けての追記:

ありがとうございます ちなみに[Int]とのちがい Tはなんですか?

プログラムの世界には、シンタックスシュガーと呼ばれるものがあります。
Array<Int>のシンタックスシュガーが[Int]です。

シンタックスシュガーというのは、長いものを短くかける手法です。([Int]のほうが、Array<Int>よりもプログラマーが文字を打つ量が減ってうれしいということです。書くだけでなく文字数が少ないほうが、読み手も楽であるという考え方もあります。結局、Array<Int>[Int]は同じ意味です)

Correct answer by shingo.nakanishi on January 5, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP