Если вы используете Lodash , вы можете сделать следующее:
Импортировать Lodash в ваш компонент.
import * as _ from "lodash";
Объявить переменную-член в компоненте для ссылки на Lodash.
lodash = _;
Тогда, на ваш взгляд, вы можете использовать функцию диапазона . 20 может быть заменен любой переменной в вашем компоненте.
*ngFor="let number of lodash.range(20)"
Надо сказать, что привязка к функциям в представлении может быть дорогостоящей, в зависимости от сложности функции, которую вы вызываете, поскольку обнаружение изменений будет вызовите функцию повторно.
Определения для Объектной Ориентации , конечно, огромная куча проблем , но здесь составляют мои 2 цента:
мне, Объектная Ориентация - все об объектах, которые сотрудничают путем отправки сообщений. Таким образом, мне, единственной самой важной черте объектно-ориентированного языка.
, Если я должен был поднять заказанный список всех функций, которые должен иметь объектно-ориентированный язык, он был бы похож на это:
, Очевидно, этот список очень спорен, так как это исключает большое множество языков, которые широко расцениваются столь же объектно-ориентированные, такой как Java, C# и C++ , все из которых нарушают точки 1, 2 и 3. Однако нет сомнения, что те языки допускают объектно-ориентированное программирование (но также - C), и даже упростите его (который C не делает). Так, я явился по зову языки, которые удовлетворяют те "чисто объектно-ориентированные" требования.
Как архитипичные объектно-ориентированные языки я назвал бы Сам и Новояз .
Оба удовлетворяют вышеупомянутые требования. Оба вдохновлены и преемники [1 114] Smalltalk, и обоим на самом деле удается быть "большим количеством OO" в некотором смысле. Вещи, которые я люблю приблизительно Сам и Новояз, состоят в том, что оба берут сообщение, отправляющее парадигму до крайности (Новояз еще больше, чем Сам).
В Новоязе, все является сообщением, отправляют. Нет никаких переменных экземпляра, никаких полей, никаких атрибутов, никаких констант, никаких имен классов. Они все эмулированы при помощи методов считывания и методов set.
В Сам, существуют никакие классы , только объекты. Это подчеркивает, о чем OO действительно : объекты, не классы.
Архетип
способность выразить реальные сценарии в коде.
foreach(House house in location.Houses)
{
foreach(Deliverable mail in new Mailbag(new Deliverable[]
{
GetLetters(),
GetPackages(),
GetAdvertisingJunk()
})
{
if(mail.AddressedTo(house))
{
house.Deliver(mail);
}
}
}
-
foreach(Deliverable myMail in GetMail())
{
IReadable readable = myMail as IReadable;
if ( readable != null )
{
Console.WriteLine(readable.Text);
}
}
, Почему?
, Чтобы помочь нам понять это более легко. Это имеет лучший смысл в наших головах, и, если реализовано правильно делает код более эффективным, допускающим повторное использование и уменьшает повторение.
Для достижения этого Вам нужно:
К далее, какой сказанный aib, я сказал бы, что язык не действительно объектно-ориентирован, если стандартные библиотеки, которые доступны, не объектно-ориентированы. Самым большим примером этого является PHP. Хотя это поддерживает ориентированные понятия всего стандартного объекта, то, что такой большой процент стандартных библиотек не объектно-ориентирован, означает, что почти невозможно написать Ваш код объектно-ориентированным способом.
не имеет значения, что они представляют пространства имен, если все стандартные библиотеки все еще требуют, чтобы Вы снабдили префиксом все свои вызовы функции материал как mysql_ и pgsql _, когда на языке, который поддерживал пространства имен в фактическом API, Вы могли избавиться от функций с mysql_ и иметь просто простое, "включают system.db.mysql.*" наверху Вашего файла так, чтобы это знало бы, куда те вещи прибыли из.
Классы поддержек, методы, атрибуты, инкапсуляция, сокрытие данных, наследование, полиморфизм, абстракция...?
Насколько я могу сказать, основное представление того, что делает язык "Объектно-ориентированным", действительно ли поддержка является идеей сгруппировать данные и методы, которые работают над теми данными, которые обычно достигаются через классы, модули, наследование, полиморфизм, и т.д.
Видят это обсуждение для обзора того, какие люди думают (мысль?) Средства Объектной ориентации.
Что касается "типичного" языка OO - который является действительно Smalltalk как Kristopher, на который указывают.
Согласно Booch, следующим элементам: Главный:
Незначительный:
Smalltalk обычно считают типичным языком OO, хотя Simula часто цитируется в качестве первого языка OO.
Текущие языки OO могут быть свободно категоризированы, которым языком они одалживают большинство понятий у:
Это не действительно языки, которые являются OO, это - код.
возможно написать объектно-ориентированный код C (со структурами и участниками указателя четной функции, если Вы желаете), и я видел некоторые довольно хорошие примеры его. (Quake 2/3 SDK приходит на ум.) Также определенно возможно записать процедурный (т.е. неOO) код в C++.
, Учитывая, что, я сказал бы, что это - поддержка языка написания хорошего кода OO, который делает это "Объектно-ориентированным языком". Я никогда не беспокоил бы использованием участников указателя функции в структурах в C, например, поскольку, что будет обычными функциями членства; поэтому я скажу, что C не является языком OO.
(Подробно останавливающийся на этом, можно было сказать, что Python не объектно-ориентирован, также с обязательным "сам", ссылка на каждом шаге и конструкторах звонила init, этажерка; но это - Религиозное Обсуждение.)
В основном Объектно-ориентированный действительно сводится к "передаче сообщений"
На процедурном языке, я вызываю функцию как это:
f(x)
И имя f, вероятно, связывается с конкретным блоком кода во время компиляции. (Если это не процедурный язык с функциями высшего порядка или указателями на функции, но позволяет, игнорируют ту возможность в течение секунды.), Таким образом, эта строка кода может только означать одну однозначную вещь.
На объектно-ориентированном языке я передаю сообщение объекту, возможно, как это:
o.m(x)
В этом случае. m не является названием блока кода, но "селектором метода" и какой блок кода называют, на самом деле зависит от объекта o в некотором роде. Эта строка кода является более неоднозначной или общей, потому что это может означать разные вещи в различных ситуациях, в зависимости от o.
В большинстве языков OO, объект o имеет "класс", и класс определяет, какой блок кода называют. На нескольких языках OO (наиболее заметно, JavaScript) o не имеет класса, но присоединил методы непосредственно к нему во времени выполнения или наследовал их от прототипа.
Мое разграничение состоит в том, что ни классы, ни наследование не необходимы, чтобы языком было OO. Но эта полиморфная обработка сообщений важна.
, Хотя можно фальсифицировать, это с указателями функции в говорит, что C, это не достаточно, чтобы C назвали языком OO, потому что Вы оказываетесь перед необходимостью реализовывать свою собственную инфраструктуру. Можно сделать это, и стиль OO возможен, но язык не дал его Вам.
Игнорируя теоретические последствия, это, кажется,
"Любой язык, который имеет ключевое слово, названное 'классом'" :-P
Когда вы можете делать классы, он ориентирован на объект
Например: Java ориентирован на объект, JavaScript нет, а C ++ выглядит как какой-то «объектный любопытный» язык