Синтаксис ->get_header
- это вызов метода. Вызов метода передает invocant (т. Е. Имя объекта или класса) в качестве неявного первого аргумента.
Итак, предположим, что у нас есть
package MyUtil;
sub foo {}
, вызов
MyUtil->foo(1, 2, 3)
заканчивает выполнение MyUtil::foo("MyUtil", 1, 2, 3)
.
Конечно, вы можете напрямую вызвать
MyUtil::foo(1, 2, 3)
, не передавая никаких неявных аргументов.
См. также perldoc perlobj
.
Другое отличие состоит в том, что версия ::
выполняет обычный вызов функции, тогда как версия ->
выполняет вызов метода, который также следует за наследованием, т.е. с MyUtil->foo
вообще не должно быть MyUtil::foo
sub, если MyUtil
наследуется от класса, который предоставляет метод foo
.
ActionResult
находится в пространстве имен Microsoft.AspNetCore.Mvc
, на которое вы фактически ссылаетесь. Visual Studio просто не подсвечивает правильно, это ошибка, с которой я сталкиваюсь время от времени.