差分
このページの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} | ||