- ベストアンサー
Perlですが、サブルーチンのイメージを教えて下さい
ある本によると「サブルーチンは渡された値を指示通りに処理し、結果を吐き出す箱のようなものである」とあります。イメージ図は本体が箱で上に煙突の様なものが突き出ていてそこからデータを入れて、箱の側面にも煙突があり、加工されたデータが出てくるイメージです。他にイメージはありますでしょうか。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Perlの引数は 一次元配列 @_($_[0], $_[1], $_[2], ....)によって渡されるので,私の頭の中にはこんなイメージがあります。 +――――+ 9|■■■■|2,3,4 ←|■■■■|←←←←← +――――+ 右側から複数の材料(引数)がベルトコンベアに乗って一列に流れてくる(一次元配列@_)と,それがブラックボックス(関数)に吸い込まれて,加工製品(戻り値)が1つ出てくる。 #2を真似するなら,こんなコードを想定しています。 print &a(2, 3, 4); sub a(){ ($x, $y, $z) = @_; return $x + $y + $z; }
その他の回答 (2)
- hofchan
- ベストアンサー率62% (17/27)
>「サブルーチンは渡された値を指示通りに処理し、結果を吐き出す箱のよ >うなものである」とあります。 #!/usr/bin/perl $x = 1; print &a($x); sub a(){ return $_[0]*2; } 上記の $x = 1; の数値を色々変えて実行すればわかります このサブルーチン a() を、あなたの読んだ本の言葉で言えば 渡された値 : $x (引数) 指示通りの処理: $_[0]*2 (この場合は2倍するだけ) 結果を吐き出す:return (戻り値) イメージは特にありませんが、これを数学的に書けば y = 2x です x の値により y が決まると言うことです
指令を出すと決まったとおり値を出してくる スイッチを押すとブザーが鳴る スイッチを押す という値を渡し ブザーが鳴る という結果が返ってくる ・・・イマイチ