После этого вопроса об операторе "плюс" у меня есть дополнительный вопрос. Мы знаем разницу между plus
и uplus
, и, таким образом, 1+2
разрешается в 3
, так же как 1++2
или даже 1++++++++2
. Странная вещь происходит в синтаксисе массива, рассмотрим этот пример:
>> [1 ++ 2]
ans =
1 2 % Two unary plusses
>> [1 + + 2]
ans =
3 % A normal plus and a unary one
>> [1++2]
ans =
3 % A normal plus and a unary one
То же самое работает с несколькими плюсами, [1 +++..+++ 2]
, поэтому со всеми плюсами последовательно в середине генерируется [1 2]
, все остальные комбинации (насколько я тестировал) приводят к 3
.
Насколько я знаю, пробелы имеют ограниченное значение в MATLAB; exp(3*x/y)
совпадает с exp( 3 * x / y )
. Их можно использовать при создании массивов: [1 2]
будет генерировать массив 1 на 2, и есть несколько других применений, но разделение операторов не входит в их число.
Поэтому мой вопрос: почему [1 ++ 2]
и [1 + + 2]
разрешаются по-разному?
Обратите внимание, что minus
и uminus
имеют такое же поведение, и что синтаксический анализатор достаточно волшебен, чтобы анализировать [1;;;3++ + + +--+ + ++4,;;;,;]
отлично подходит для [1;7]
.