差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| odin:procedures [2025/05/20 13:09] – freemikan | odin:procedures [2025/06/13 10:03] (現在) – [プロシージャ] Set link to odin top page for logo image freemikan | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| ====== プロシージャ ====== | ====== プロシージャ ====== | ||
| + | [[odin: | ||
| + | |||
| 何かの仕事を行うプログラムの一部分をまとめて、繰り返し利用できるようにしたり、コードの構造を整理したりするために、プロシージャを用います。 | 何かの仕事を行うプログラムの一部分をまとめて、繰り返し利用できるようにしたり、コードの構造を整理したりするために、プロシージャを用います。 | ||
| プロシージャとは手続きという意味です。 | プロシージャとは手続きという意味です。 | ||
| 行 5: | 行 7: | ||
| Pascal言語などのように、値を返すかどうかによって関数とプロシージャに呼び分けれている場合もありますが、Odinではどちらもプロシージャと呼びます。 | Pascal言語などのように、値を返すかどうかによって関数とプロシージャに呼び分けれている場合もありますが、Odinではどちらもプロシージャと呼びます。 | ||
| + | |||
| + | ===== 基本 ===== | ||
| すでにひとつプロシージャが登場しています。 | すでにひとつプロシージャが登場しています。 | ||
| mainプロシージャです。 | mainプロシージャです。 | ||
| 行 39: | 行 43: | ||
| '' | '' | ||
| + | ===== 名前付き戻り値 ===== | ||
| 戻り値に名前をつけることができます。 | 戻り値に名前をつけることができます。 | ||
| 行 47: | 行 52: | ||
| </ | </ | ||
| - | 複数の値を返すことができます。 | + | ===== 複数の値を返す ===== |
| + | プロシージャは複数の値を返すことができます。 | ||
| <code odin> | <code odin> | ||
| 行 60: | 行 66: | ||
| </ | </ | ||
| + | ===== 名前付き引数 ===== | ||
| 引数を名前で渡すことができます。 | 引数を名前で渡すことができます。 | ||
| 行 79: | 行 86: | ||
| </ | </ | ||
| + | ===== パラメーターのデフォルト値 ===== | ||
| パラメーターのデフォルト値を設定することができます。 | パラメーターのデフォルト値を設定することができます。 | ||
| 行 89: | 行 96: | ||
| make_square :: proc(x, y: int, size := 100) -> Rect { | make_square :: proc(x, y: int, size := 100) -> Rect { | ||
| + | // sizeのデフォルト値を100とします。 | ||
| + | // 100という数値に特に意味はありません。 | ||
| + | |||
| return Rect{x = x, y = y, width = size, height = size} | return Rect{x = x, y = y, width = size, height = size} | ||
| } | } | ||
| 行 98: | 行 108: | ||
| </ | </ | ||
| + | ===== オーバーロード ===== | ||
| プロシージャのオーバーロード、すなわちパラメーターが異なる同じ名前のプロシージャを複数定義することが可能です。 | プロシージャのオーバーロード、すなわちパラメーターが異なる同じ名前のプロシージャを複数定義することが可能です。 | ||
| - | ただし、C++などのように、単に同じ名前のプロシージャを定義すれば良いだけ、というものではありません。 | + | ただし、C++などのように、単に同じ名前のプロシージャを定義すれば良いだけではなく、明示的にオーバーロードすることを記述しなければなりません。 |
| - | 明示的にオーバーロードすることを記述しなければなりません。 | + | 1ステップ追加の作業が必要になります。 |
| <code odin> | <code odin> | ||
| 行 119: | 行 130: | ||
| } | } | ||
| - | // 明示的なオーバーロード | + | // 明示的なプロシージャのオーバーロード |
| dot :: proc{dot2, dot3} | dot :: proc{dot2, dot3} | ||
