差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

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