можно определить функцию в окне командной строки языка программирования? - PullRequest
2 голосов
/ 23 ноября 2010

Можно ли определить функцию в окне командной строки Matlab?Мне кажется, нет.

Но для R это возможно.Мне было интересно, почему есть такая разница, и есть ли что-то еще, что можно сказать за такой особенностью языка программирования, или я могу сказать просто язык интерпретации (такой как Python, Bash, ...)?

Спасибо!

Ответы [ 3 ]

4 голосов
/ 23 ноября 2010

Вы можете определить функции в командном окне Matlab. Он будет оцениваться как функция, но он не будет доступен вам в вашем следующем сеансе Matlab (хотя вы можете сохранить и загрузить его как переменную).

Например, я копирую функцию @ Dirk Eddelbuettel

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

РЕДАКТИРОВАТЬ 1 Обратите внимание, что вы можете определять только функции с одним оператором как анонимные функции в Matlab, поэтому вы не можете использовать, например, for-loop (если вы не используете зло 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
2 голосов
/ 23 ноября 2010

Это на самом деле не особенность языка программирования, а реализация этого языка программирования.Например, существуют интерпретаторы C и компиляторы Lisp.Обычно это называется REPL (Read-Eval-Print-Loop) и обычно является функцией интерпретируемых реализаций.

1 голос
/ 23 ноября 2010

Да, если и когда язык поддерживает это. Итак, вот простой пример R , вырезанный и вставленный из командной строки, которую я использую:

R> cubed <- function(x) x^3
R> cubed(2)
[1] 8
R> cubed(3)
[1] 27
R> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...