関数 (function)

関数の定義と呼び出し。

Awk

値渡しのみ。複数の値を返す場合は、グローバル変数(= 通常の変数)や配列を使う。

BEGIN {
  # 呼び出し例
  # 定義より少ない引数が可能
  print callee(1, 2) "," global
}

# 関数定義
# 空白の後はローカル変数とするのが慣習
function callee(v1, v2,   local) {
  global = v1 - v2
  local = v1 + v2
  return v1*local + v2/local
}

メニューに戻る

C言語

値渡しと参照渡しがある。

#include <stdio.h>

void callee(int byVal, int *byRef);  // 関数プロトタイプ宣言

// 呼び出し例
int main()
{
	int byRef;
	callee(1, &byRef);
	printf("%d\n", byRef);
	return 0;
}

// 関数定義
void callee(int byVal, int *byRef)
{
	*byRef = byVal;
}

メニューに戻る

Java

値渡しのみ。複数の値を返す場合は、オブジェクトを返すか、引数のオブジェクトの中身を書き換える。

クラス・オブジェクトを使わずに、グローバル変数や関数呼び出しのみで気楽なプログラミングを行う時は、すべてに static を付ける。

public class Kiraku
{
	// 呼び出し例
	public static void main(String [] args) {
		System.out.println(func());
		System.out.println(func());
	}

	static int globalVar = 1;

	// 関数定義
	static int func() {
		return ++globalVar;
	}
}

メニューに戻る

Python

値渡しのみ。複数の値を返す場合はタプルや多重代入を使う。オブジェクトやグローバル変数経由でもよい。

# 関数定義
def callee(v1, v2):
	return v1 + v2

print callee(1, 2)  # 呼び出し例


# 多重代入例
def multi(x):
	return x + 1, x + 2

a, b = multi(3)   # a = 4, b = 5

メニューに戻る

Ruby

値渡しのみ。複数の値を返す場合は多重代入を使う。オブジェクトやグローバル変数経由でもよい。

# 関数定義
def callee(v1, v2)
	return v1 + v2
end

puts callee(1, 2)  # 呼び出し例


# 多重代入例
def multi(x)
	return x + 1, x + 2
end

a, b = multi(3)   # a = 4, b = 5

メニューに戻る

Shell

関数はコマンドに類似する。

# 関数定義
function callee1()
{
	return `expr $1 + $2`
}

# 関数定義 'function' は省略できる
callee2()
{
	echo `expr $1 + $2`
}

callee1 1 2  # 呼び出し例
echo $?

r=`callee2 1 2`  # 呼び出し例
echo $r

メニューに戻る