🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

434閲覧

Swiftのクラス定義で< >の意味が知りたい

voloce

総合スコア14

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/12/28 17:42

現在Githubのソースコードをトレースして勉強してるのですが、不明瞭な点があり、
・検索しても出てこない
・検索ワードすら分からない
状態です。

下記が該当のコードになります

swift

1class CollectionViewDataSource<Cell: UICollectionViewCell,model> : NSObject, UICollectionViewDataSource { 2 3 ~~~~省略~~~~ 4 5}

上記の<Cell: UICollectionVIewCell,model>の部分が理解できません。
クラス名の中に < >を入れる事はどのような意味があるのでしょうか?
またこのような定義の方法をなんて言うのか分かる方がいれば、教えて頂けたら幸いです。

簡単な問題かもしれないですが、
よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

ジェネリクス、です。

言語仕様はこちらです。
https://docs.swift.org/swift-book/LanguageGuide/Generics.html

すごく単純に言うと、具体的な型を指定せず、「なんとか型」に対して処理を記述する手段です。
使う時に具体的な型を指定することで、例えばIntでもFloatでも動作するようなクラスを定義する事ができます。例えば3の倍数ときはアホになるクラスを、IntやFloatを指定せずに作り、使うときにIntで使ったり、Floatで使ったりできるようにするための技術です。

例示されている定義は、UICollectionViewCellのサブクラスと、もうひとつのオブジェクトを後で指定して使える、CollectionViewControllerクラスを作成するものです。こうしておくと、Cellやmodelを差し替えて、複数のCollectionViewControllerを作れるようになります。例えば、画像の一覧を表示するコレクションビューと、音楽の一覧を表示するコレクションビューを、一つの定義で作ることができます。画像の方は、modelとCellに画像を扱うクラスを与えて作成し、音楽の場合は、modelとCellに音楽を扱うクラスを与えて作成するとわけです。

投稿2019/12/28 20:39

eytyet

総合スコア803

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

voloce

2019/12/29 12:14

ありがとうございます!理解できました!! URLも貼ってくれて助かります!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問