2010-11-23 9 views
2

Matlabのコマンドラインウィンドウで関数を定義することはできますか?私には見えません。プログラミング言語のコマンドラインウィンドウで関数を定義することは可能ですか?

しかし、Rの場合はそうすることができます。なぜこの違いがあるのだろうと思っていましたが、この種のプログラミング言語の特徴の背後にあることがもっとあるのか、それとも単にPython、Bashなどの解釈言語だけでいいのですか?

ありがとうございます!

+1

について、あなたは何を話していますか? – Falmarri

+3

あなたが望むフレーズは "REPL"です。 http://en.wikipedia.org/wiki/Read-eval-print_loop –

+1

関連する質問:[Matlabの無名関数で複数のステートメントを実行するには?](http://stackoverflow.com/questions/558478/how-to -execute-matlab-anonymous-function内の複数の文)。 – gnovice

答えて

4

:だからここに些細なRたとえば、切断され、私が使用しているコマンドプロンプトから貼り付けがあります。関数のように評価されますが、次のMatlabセッションでは利用できません(変数のように保存してロードすることはできますが)。

は一例として、私は@Dirk Eddelbuettelの機能コピー

>> cubed = @(x)x^3; 
>> cubed(2) 
ans = 
    8 

EDIT 1あなたは、例えば使用することはできませんので、あなただけの、MATLABで無名関数としての単一文関数を定義することができます 注意for-loops(あなたが悪いことを使わない限りeval、すべて許可する)。ただし、匿名関数をネストすると、任意の複雑な再帰文を作成することができます。したがって、私はあなたが本当にコマンドラインウィンドウ内の任意の関数を定義することができると思います。それは努力に値するものではないかもしれませんが、理解することは非常に難しいでしょう。

EDIT 2ここMatlab centralから階乗を計算する再帰的なネストされた匿名関数の例です:

>> fact = @(val,branchFcns) val*branchFcns{(val <= 1)+1}(val-1,branchFcns); 
>> returnOne = @(val,branchFcns) 1; 
>> branchFcns = {fact returnOne}; 
>> fact(4,branchFcns) 
ans = 
    24 
>> fact(5,branchFcns) 
ans = 
    120 
+0

ありがとう! Matlabのコマンドラインウィンドウで任意の関数を定義できますか?なぜ私はできませんでしたか? – Tim

+0

@Tim:あなたの例を投稿すると、それがうまくいかなかった理由がわかります。また、私の編集を参照してください。 – Jonas

+0

それを知ってうれしい!ありがとう! – Tim

2

これは実際にはプログラミング言語の機能ではなく、そのプログラミング言語の実装です。例えば、CインタプリタとLispコンパイラが存在します。これは通常、REPL(Read-Eval-Print-Loop)と呼ばれ、一般に解釈された実装の特徴です。

+0

ありがとう!それについて知ってうれしい。私の元の質問に戻ると、コマンドラインウィンドウで実行できる関数の定義が特定の実装に依存するかどうかは同じですか?同じ言語の場合、異なる実装のコマンドラインウィンドウでは、その中に関数の定義を許可してもしなくてもよいでしょうか? – Tim

+0

@ティム、それは正しいです。特定の言語に興味がある場合は、REPLを使って実装を探すだけです。もちろん、あるかもしれないし、そうでないかもしれない。また、私はあなたがREPLについて話していると確信しています。 「コマンドラインウィンドウ」はここでは標準ではない用語ですが、ここではREPLだけが意味をなさないと思われるものです。 – aaronasterling

+0

もう一度ありがとうございます。 REPLのためのウィキペディアを読んだ後、私は今REPLと通訳の関係について何か混乱していますか? – Tim

1

ありがとうございます。あなたは、MATLABのコマンドウィンドウで関数を定義することができ

R> cubed <- function(x) x^3 
R> cubed(2) 
[1] 8 
R> cubed(3) 
[1] 27 
R> 
関連する問題