- ベストアンサー
Perlです。サブルーチンについて
以下の文はあっていますでしょうか。 # サブルーチンを呼び出して引数は 3 とする。 # そして返ってきた戻り値を変数$aに代入せよ。 $a=&a(3); # サブルーチン名aせよ。 sub a{ # $_[0]が引数 3 となりプラス1して変数$bに代入せよ。 $b=$_[0]+1; # 変数$bの内容を戻り値として返せ。 return $b; } # 変数$aの内容を表示せよ。 print "$a";
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
あっているので問題はないですが、できる限りスマートにすると、こんな感じになります。 print &a(3),"\n";#カンマで区切れる sub a{ return $_[0]+1;#ここに計算式を入れることも可能 } 主に自己設定変数の$aと$bを消しました。returnのある関数は、代入のできない変数のように扱えるため、今回のように直接print文に使えます。(ただし、""で囲むと、ただの文字になりますのでご注意を。) 中の$bは、そのままreturnの後ろに計算式を入れて、消しました。 最後に、perlのサブルーチンは最初でも、最後にも記述していいというルールがあります。(Cとかは、使うより前に関数宣言、もしくは関数を書かないと使えない。でも、perlはどこに書いていても使える。) なので、print文より後ろに書いていても実行できます。自分が読みやすいソースになるよう、いろいろ試してみてください。
その他の回答 (2)
- kabaokaba
- ベストアンサー率51% (724/1416)
趣旨がずれますけど もうちょっと削れますね print a(3); sub a { $_[0]+1 } サブルーチン呼び出しに & をつけるのは Perl4の書式だし,誤解を招くこともあるので Perl5でつかうのはやめるほうがよいでしょう. 使うのはサブルーチンリファレンスのときだけかな.
- sakusaker7
- ベストアンサー率62% (800/1280)
あってますが好ましくない点が幾つか。 sort の比較関数に対する引数のプレースホルダとして 使われますので変数名として $a や $bを使うのは避けましょう。 > print "$a"; 変数をダブルクォートで括る必要はふつうはまずありません。