@ Синтаксис бритвы внутри называется оператором? - PullRequest
2 голосов
/ 13 октября 2011

Я только что купил книгу о ASP.NET MVC с Razor View Engine. Есть подраздел под названием Usage of @ Operator, и этот заголовок подраздела делает меня ... ну, неудобным .

Является ли @ внутри механизма просмотра бритвы оператором?

ОБНОВЛЕНИЕ

Полагаю, мой вопрос не так ясен. Я хочу знать, является ли @ оператором внутри механизма просмотра бритвы. Например, < > = != >= => они называются операторами внутри языка C #. То же самое для @ в движке Razor View?

Ответы [ 7 ]

5 голосов
/ 13 октября 2011

Я думаю, что причина вашего дискомфорта в том, что токен @ (если говорить об этом с точки зрения синтаксического анализа, хотя слово символ также должно быть перегружено)указать ряд различных ситуаций.Давайте рассмотрим, что это такое:

  • Запишите значение в вывод:

    @this.Value
    
  • Укажите переход блока кода:

    @{
        var foo = 1;
        foo += 1;
    }
    
  • Укажите переход оператора кода:

    <div>
    @if(foo) {
         // code
    }
    </div>
    
  • Укажите переход к разметке до конца строки

    @if(foo) {
        foo = false;
        @: value printed to output
    }
    
  • Укажите инструкции директивы:

    @inherits MyCustomBaseType
    
  • Укажите блоки специального кода:

    @section Foo {
        <div />
    }
    
    @helper Bar(int param) {
        param += 1;
    }
    
  • Разделите блоки комментариев:

    @*
       This is a comment
    *@
    
  • Escape-символ @:

    Email me at myemail@@example.com
    

По моему мнению, только первое использование может рассматриваться какоператор.Операнд (т. Е. Все остальное, что следует от @ до, но исключая первый значащий разметку символ пробела), передается в качестве параметра в метод Write().Во всех других случаях нет операндов с четкой идентификацией или для идентификации дополнительных токенов (* в блоке комментариев и т. Д.).

4 голосов
/ 13 октября 2011

Согласно официальным страницам на Razor, вы можете найти один пример здесь , не похоже, что это называется оператором.

со связанной страницы:

Вы добавляете код на страницу, используя символ @

(мой акцент)

Я также нашел множество других страниц на этом же сайте, все ссылающиеся на него как на «символ @», так что в этом смысле он не считается оператором .

Однако , если вы читаете на Википедию на тему операторов , то:

Синтаксические операторы обычно контрастируют с функциями. В большинстве языков функции могут рассматриваться как особая форма префиксного оператора с фиксированным уровнем приоритета и ассоциативностью, часто с обязательными скобками, например, Func (a) (или (Func a) в LISP). Большинство языков поддерживают функции, определенные программистом, но не могут претендовать на поддержку операторов, определенных программистом, если только они не имеют более префиксной нотации и более одного уровня приоритета. Семантически операторы можно рассматривать как особую форму функции с различными обозначениями вызова и ограниченным числом параметров (обычно 1 или 2).

(снова мой акцент)

Тогда я бы сказал, что @ на самом деле оператор. Это символ с особым значением, и вы можете утверждать, что вы «выходите из окружающего контекста, чтобы сделать что-то еще», что-то вроде вызова функции.

Другими словами, хотя слово operator не фигурирует в статьях сайта, которые я видел до сих пор, я все же считаю его оператором.

3 голосов
/ 13 октября 2011

Хм, вы имеете в виду раздел «Шрифты и цвета» диалогового окна «Инструменты> Параметры» в Visual Studio? Если это так, то нет, это не оператор, а «HTML-скрипт на стороне сервера». «Функции», «раздел» и другие специфичные для бритвы ключевые слова также имеют этот цвет.

В противном случае, это оператор из технического описания. Я не совсем уверен, какое еще различие вы ищете.

2 голосов
/ 13 октября 2011

Нет, символ @ не используется как оператор.Это только выбор автора, чтобы назвать это так.

Например, в блоге , представляющем Razor , он нигде не описан как оператор.Это пока еще не официальный или фактический термин.Лично я бы назвал это тегом , так как он используется в коде разметки вместе с другими тегами, и он используется в качестве замены для тега сценария <% %>.не совсем неправильно называть это оператором, но это обычно не используется.Так как бритвенный тег содержит код C # или VB, который также может содержать операторы, он может запутаться.

1 голос
/ 13 октября 2011

Символ @ запускает встроенные выражения, блоки с одним оператором и блоки с несколькими операторами.

В блоге Скотта Гу он не называет его operator, но есть много других разработчиков, которые делают.Лично я не вижу в этом operator, а скорее identifier.

0 голосов
/ 13 октября 2011

Насколько я знаю, такие символы, как>,! = И &&, называются равенством, реляционными или условными операторами.Символ @, похоже, не вписывается ни в одну из этих групп, поэтому я должен сказать, нет, его нельзя назвать оператором.Однако, с другой стороны, это указывает на то, что «некоторая операция» выполняется, что делает ее весьма вероятной для вызова оператора.

0 голосов
/ 13 октября 2011

Символ @ не является оператором, это индикатор, который указывает, что начинается оператор бритвы.

Это сопоставимо с <?php ?> в php. Это указывает компилятору / интерпретатору, где ваш код

, например

@Html.ActionLink(...)

a @(...) дает вам возможность немного поработать там * 1010 например *

@(
int a = 0;
int b = 4;
int c = a + b;
)

Надеюсь, это поможет вам в пути

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...