関数と返り値の書き方についてまとめます。
tcshには関数がないので除きます。
関数(サブルーチン、メソッド)の例は、
について例示したいと思います。
関数の定義する位置について、Perlはプログラムの後方に書いても大丈夫ですが、RubyやPythonは手前に書いておかなければなりません。
以下、スクリプト間の違いですが、
--- Perl
#!/usr/bin/perluse warnings;# サブルーチンの呼び方は、「&」をつける$sum = &test0(1,2);print "$sum\n";# 配列の返り値を変数受け(要素数を受け取る)$a0 = &test1;# 配列の返り値を配列受け@a1 = &test1;print "$a0\n";foreach $tmp(@a1){ print "$tmp\n";}# 複数の返り値($b0,$b1) = &test2;print "b0=$b0, b1=$b1\n";exit;### サブルーチン# 引数2つ受けsub test0 { ($a,$b) = @_; return $a+$b;}# 返り値が配列sub test1 { @array = (1,2,3,4,5); return @array;}# 返り値が複数sub test2 { return 6,7;}--- Ruby
#!/usr/bin/ruby -w### メソッド# 引数2つ受けdef test0(a,b) return a+bend# 返り値が配列def test1 array = [1,2,3,4,5] return arrayend# 返り値が複数def test2 return 6,7endsum = test0(1,2)puts suma0 = test1a0.each {|num| puts num}b0,b1 = test2puts "b0=%d, b1=%d" %[b0,b1]--- Python
#!/usr/bin/pythondef test0(a,b): return a+bdef test1(): array = [1,2,3,4,5] return arraydef test2(): return 6,7sum = test0(1,2)print suma0 = test1()for num in a0: print numb0,b1 = test2()print "b0=%d, b1=%d" %(b0,b1)