関数の定義と使用法 の変更点


 RIGHT:寄稿:東條遼平
 
 * 自作の関数を使う [#t5eda22b]
 
 Awkでは自作の関数を作成して使うことができます。
 
  {myprint($1,$2)}
  
  function myprint(a,b,   c){
    c = a*b;
    print c;
  }
 
 これは第一項目と第二項目を掛けたものを出力しています。ここでmyprintは3つの仮引数があるにも関わらず、実引数は2つしか渡していません。これはAwkが局所変数が使えない為、自作の関数内でローカルに使う変数を扱おうと思って、
 
  {myprint($1,$2)} 
  
  function myprint(a,b){
    c = a*b;
    print c;
  }
 
 こうやってしまうと、確かに動くのですが、変数Cはグローバルになりますので、例えば、
 
  {c=$1;myprint($1,$2);print c}
  
  function myprint(a,b){
    c = a*b;
    print c;
  }
 
 としたときに呼び出しもとのcの値が変わってしまいます。そのためローカルで使いたい分の変数を余分に仮引数として宣言しておきます。
 
  {c=$1;myprint($1,$2);print c} 
  
  function myprint(a,b,   c){
    c = a*b; 
    print c;
  }
 
 こうすれば呼び出し元の値は変わりません。また、仮引数のcの前に沢山のスペースが入っているのは実際に関数を使う際に実引数を与える部分と、ローカルで使う分が分かるようにするためです。 C言語同様引数には値渡しとなります。
 
 また値を返したり分岐したり再帰も行えます。
 
  {print fact($1)}
  
  function fact(a){
    if(a==1)return 1;
    return a*fact(a-1);
  }
 
 ちゃんと再帰ができています。 
 
Valid XHTML 1.1! home > コンピュータ > プログラミング >
リロード   新規 編集 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS
Modified by 物理のかぎプロジェクト PukiWiki 1.4.5_1 Copyright © 2001-2005 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-jiPowered by PHP 5.3.29HTML convert time to 0.002 sec.