この記事では、Dartのメソッドと関数の違いについて書いていきます。
メソッドとは
「オブジェクト(データやクラス)に紐づいた『関数(処理)』」のことです。
メソッドと関数との違い
「独立したものかどうか」です。
- 関数 (Function): 単体で独立している処理。どこにも属しておらず、いつでも呼び出せます。
- イメージ: 自販機やゴミ箱(街中にぽつんと置いてあって、誰でも使える)
- メソッド (Method): 特定のデータ(オブジェクト)やクラスの中に所属している処理。「データ名.メソッド名()」の形で呼び出します。
- イメージ: スマホの「カメラを起動する」機能(スマホという“モノ”に付いている機能なので、スマホがないと使えない)
以下の例で詳しく説明すると
メソッド
void main() {
String text = "hello";
// text(文字列データ)が持っている「大文字にする」というメソッド(必殺技)
String result = text.toUpperCase();
print(result); // HELLO
}オリジナルのメソッドを作り実行してみる。
// 「犬」という設計図(クラス)を作る
class Dog {
String name = "ポチ"; // プロパティ(名詞:データ)
// これがメソッド(動詞:処理・アクション)!
void bark() {
print("$nameは「ワンワン!」と吠えた!");
}
}
void main() {
Dog myDog = Dog(); // ポチが誕生
// ポチの「吠える」というメソッドを実行する
myDog.bark(); // 出力: ポチは「ワンワン!」と吠えた!
}
関数
void関数は、何もデータを返さないのが特徴です。そのためvoid関数はreturnをあまり書きません。
// ① 関数を定義する(作る)
void sayHello() {
print("こんにちは!");
}
void main() {
// ② 関数を呼び出す(使う)
sayHello(); // 出力: こんにちは!
sayHello(); // 出力: こんにちは!(何度でも呼び出せる!)
}
greet関数で定義しmain関数で処理する場合
// 引数として「名前(name)」を受け取る関数
void greet(String name) {
print("ひさしぶり、$nameさん!");
}
void main() {
// 関数を呼び出すときに、具体的なデータを渡す
greet("たかし"); // 出力: ひさしぶり、たかしさん!
greet("さくら"); // 出力: ひさしぶり、さくらさん!
}
引数ありの関数(returnで返す例)
// 2つの数字を足し算して、その結果(int型)を「返す」関数
int add(int a, int b) {
int sum = a + b;
return sum; // 「return」で結果を外に送り出す
}
void main() {
// 関数の計算結果を受け取って、変数に入れる
int result = add(5, 3);
print(result); // 出力: 8
}
// 左側が String なので、returnで文字列データを返さないとエラーになる
String greet(String name) {
return "ひさしぶり、$nameさん!";
}
void main() {
// 返ってきたデータを受け取って、後から使う
String message = greet("たかし");
print(message);
}
String class – dart:core library – Dart API
API docs for the String class from the dart:core library, for the Dart programming language.
