関数(工事中)

関数の定義

  • 関数は以下のように定義します.
    func test_function(x){
        return x^2; //xの2乗
    }
    
    これをyorickのプロンプトに張り付けてリターンキーを押すと, この関数が使えるようになります.
    > b=[[1,2,3],[4,5,6]]
    > test_function(b)
    [[1,4,9],[16,25,36]]
    
  • 関数を編集するのに便利な方法:
    1.yorickを起動しているディレクトリ下で拡張子".i"のファイル(hogehoge.iなど) を作成し関数を書き込み保存.
    2.プロンプトからinclude,"hogehoge.i" (include,"/path/hogehoge.i"でも可)

    さらに,自分のホームディレクトリの下にYorickというディレクトリを作り, そこにファイルを置いておけば,yorickをどこから起動しても, include,"hogehoge.i"で読んでくれます.(詳しくは,help,include)

  • yorickの多くの関数はこのようなスクリプトとして /usr/share/yorick-1.X/i/などに置かれており,それぞれの関数について詳しい 説明が埋め込まれているで,これらを読むことで大体のやり方が分かります.

    yorickのヘルプは親切なので, helpコマンドを多用し,関係する関数(SEE ALSOの項)や関数本体(defined atの 項)も読むように心がけましょう.

    keyword引数

    yorickには普通のタイプの引数の他に,keywordというタイプの引数があり, "keyword="という宣言をします.
    "amp"をkeywordとする例:
    func test_function(x,amp=){
    if(is_void(amp))amp=1.0;//ampを渡されなかった場合は1.0にする.
        return amp*x^2; //xの2乗
    }
    
    
    呼び出し例:
    >b=[1,2,3]
    > test_function(b,amp=2.0)
    [2,8,18]
    > test_function(b)
    [1,4,9]
    > 
    
    keyword引数の利点として,順序の制約が無いことが挙げられます. 例えばfunction(x,y,z,key1=,key2=,key3=)では,x,y,zの順序は変えられません が,key1,key2,key3の順序は自由です.

    for文,while文,if文

  • これらはC言語と基本的に同じです.
    > a=[1,2,3,4,5,6]
    > for(i=1;i<=numberof(a);i++){ if(a(i)>4)write,a(i);}
            5
            6
    

    変数のスコープについて

  • これも大体はC言語と同じ振舞をしますが,念のためマニュアルを読んでみ て下さい.