質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.46%
Swift

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

Q&A

解決済

1回答

682閲覧

Swiftでの関数の定義と利用

pegy

総合スコア243

Swift

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

0グッド

0クリップ

投稿2020/04/03 11:00

Swiftで関数を定義したり、それを利用する場合には以下の様に記述すると思います。
Swiftに限らず、他の言語でも一般的であろうかとおもいます。

Swift

1func calc(line: Int, height: Int) -> Int { 2 return line * height 3} 4print(calc(line: 2, height: 12)) //24

単純に書籍を読んでいて以下の様なコードが出てくると戸惑ってしまいます。

Swift

1 // UIPickerViewの列数を設定 2 func numberOfComponents(in pickerView: UIPickerView) -> Int { 3 return 1 4 } 5 // UIPickerViewの行数を取得 6 func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 7 return settingArray.count 8 }

func calc が「関数の定義」 calc()が定義した関数乗り様であるとすれば
func numberOfComponents()func pickerView()は一体何者なんでしょうか?

UIPickerViewのdocumentationを見ると
// returns the number of 'columns' to display.
@available(iOS 2.0, *)
func numberOfComponents(in pickerView: UIPickerView) -> Int
と書いてあるので、自分でfunc numberOfComponents()を定義しているわけではないと思うのですが、
もしUIPickerViewクラスのメソッドであれば,numberOfComponents(1)の様な形にすれば良い気がするのですがUIPickerViewクラスとfunc numberOfComponents()はどういう関係で、なぜ関数を定義するわけではないのびfunc XXXの様に記述しているのでしょうか?

根本的なことで誠に申し訳ございませんがよろしくお願い申し上げます。

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

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

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

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

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

guest

回答1

0

ベストアンサー

protocolと言って「こういう名前でこういう引数でこういう返り値の型の関数を定義する必要があるから中身は自分で実装してね」という仕組みです。(他言語で言うところのインターフェイス)

今回の質問だとこのプロトコル
UIPickerViewDataSource

投稿2020/04/03 11:21

編集2020/04/03 11:23
ozwk

総合スコア13532

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

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

pegy

2020/04/03 11:35

直撃回答ありがとうございます!よくわかりました。 プロトコルをもう少し調べてみます。 よろしくお願い申し上げます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問