HYPER MIKAN BOX
検索
最近の変更
メディアマネージャー
サイトマップ
文書の表示
以前のリビジョン
バックリンク
ログイン
トレース:
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== プロシージャ ====== 何かの仕事を行うプログラムの一部分をまとめて、繰り返し利用できるようにしたり、コードの構造を整理したりするために、プロシージャを用います。 プロシージャは、手続きという意味です。 別の言語では、サブルーチン、関数、メソッドなど、異なる呼び名がつけられています。 Pascal言語などのように、値を返すかどうかによって、関数とプロシージャに呼び分けれている場合もありますが、Odinではどちらもプロシージャと呼びます。 すでにひとつプロシージャが登場しています。 mainプロシージャです。 <code odin> main :: proc() { // ... } </code> mainプロシージャは、プログラムの開始地点となる特別なプロシージャです。 このmainプロシージャは、引数を取らず、戻り値がありません。 自分のプロシージャを書くときは、自由に名前をつけて、パラメーターと戻り値を設定することができます。 次の例は、パラメーターが一つのプロシージャです。 <code odin> greet :: proc(name: string) { fmt.println("Hello, ", name, "!") } </code> 次の例は、パラメーターが2つで戻り値があるプロシージャです。 <code odin> add :: proc(a, b: int) -> int { return a + b } </code> 連続するパラメーターの型が同一ならば、まとめて指定できる点に注目してください。 上の例では、a、bと続いて両方ともintなので、bの後ろにintとだけ指定するだけでOKです。 ''(a: int, b: int)'' とすることもできますが、通常はまとめてしまった方が良いでしょう。 戻り値に名前をつけることができます。 <code odin> add :: proc(a, b: int) -> (result: int) { result = a + b } </code> 複数の値を返すことができます。 <code odin> translated :: proc(x, y: int, dx, dy: int) -> (int, int) { return x + dx, y + dy } main :: proc() { x, y := translated(100, 200, 10, 20) assert(x == 110 && y == 220) } </code> 引数を名前で渡すことができます。 <code odin> greet :: proc(message, name: string) { fmt.println(message, name) } main :: proc() { greet("Hello", name = "Monkey") } </code> 名前引数はすべての位置引数より後ろで指定しなければなりません。 次の呼び出しはコンパイルされません。 <code odin> greet(name = "Monkey", "Hello") // コンパイルエラー! </code>
文書の先頭へ