ツタンラーメンの忘備録

プログラミングや精神疾患、ラーメンについて書いていきます。たぶん。

各言語の複数戻り値

知っている範囲で関数から複数の戻り値を返したいなーって思ってちょこちょこ調べている。少しまとめておこうと思います
私が一番好きなのはjavascript(言語自体は嫌い)

function my_swap(x, y){
	var r;
	r = {
		after_x:y,
		after_y:x
	};
	return r;
}

a = my_swap(1, 2);
console.log(a.after_x); //2
console.log(a.after_y); //1

一つのオブジェクトを返しているので正確には複数戻り値と言わないのかもわかりませんが。

rubyはそのまま複数返せるらしい。配列として返している扱いらしいです。

def my_swap(x, y)
	return y, x
	#return [y, x]
end

a, b = my_swap(1, 2)
print(a) #2
print(b) #1

pythonrubyと似たようなもんらしい。ただしこっちはタプル型で返ってきているとか

def my_swap(x, y):
    return y, x

a, b = my_swap(1, 2)
print a #2
print b #1

関数で複数の返り値を返す方法 - おっぱいそん!
jsっぽく戻り値を書く方法もちゃんとある。


Processingはない(javaベースなので)
Arduinoない(Cベースなので)
processingとArduinoはそもそもグローバル変数が多くなりがちな言語なので特殊かな。

ちなみにopenframeworksもない?(C++なので)

需要なさそうだけどVBAでどう複数戻り値を得るかというと配列として返せる

Function MySwap(X As Integer, Y As Integer) As Variant
	Dim R(1) as Variant
	R(0) = Y
	R(1) = X
	MySwap = R
End Function

Dim A As Variant
A = MySwap(1, 2)
MsgBox A(0) '2
MsgBox A(1) '1

Cのポインタ的にも返せる(これを返しているというのかは別として)。

関数/メソッドから複数の値を返すには(多値返却) | hydroculのメモ