Вы не ответили на мой вопрос) Основные "заповеди" ФП я знаю.
Эти правила базируются на каком-то рациональном смысле. Но я не понимаю какой рациональный смысл, в отказе от циклов внутри функции.
Всмысле кто? Об этом пишется во всех книгах и статьях про ФП.
Не моя бабушка же сказала и не я сам это придумал.
Иначе зачем пишут, что-то вроде: "В ФП вместо циклов принято использовать рекурсии".
Или объясните пожалуйста, что я понял неправильно. Потому что, ну правда, и в ознакомительных видеороликах и в статьях про ФП, говорят - циклы применять нельзя. Используйте рекурсию.
А я вот не понял почему нельзя и потому задал этот вопрос.
Даже чел в этом вопросе ответил - нельзя потому, что так предусмотрено).
Это понятно) Но почему соблюдение этого правила требуется в случае с циклом внутри функции? Мы не нарушаем главные принципы: нету побочных эффектов и функция при одних и тех же входных данных всегда дает один и тот же результат. То-есть функция чистая.
Получается полный отказ от циклов, это как заповедь: "Не спрашивай почему, просто так сказал создатель, поэтому следуй этому правилу".
Мой вопрос можно перефразировать так: есть ли рациональный смысл соблюдать данные правила абсолютно и без исключений?
Вот пример:
const i = 666;
function count (a,b) {
for (let i = 0; i < 10; i++) {
console.log((a+b)*i);
}
}
count(1,2);
console.log(i);
Данная функция чистая: она всегда будет давать один и тот же результат при одинаковых аргументах, и она не меняет какие-либо переменные вне себя и в глобальной области видимости.
Я не претендую на то, чтобы когда либо писать enterprise ) Я просто этим хотел сказать, что node.js может удовлетворить все мои потребности с лихвой и мне нет смысла учить Java или C#. А то поналетят умники, говорить, что Javascript для бэкенда это калище.
Daria Motorina, Да потому, что человек тоже не должен знать координаты объекта. Но он может его найти исследуя игровой мир. При этом никто, включая саму память игры, заведомо не знает координаты созданного объекта.
И что за привычка, рассуждать о вопросе человека а не давать ответ на него? Вы либо можете дать ответ, и даете его, либо не даете, если не имеете идей для ответа. А так получается, вы не помогаете, а просто разглагольствуете)
edward_freedom, Попробовал, но на самом деле я уже так пробовал и раньше - тот же результат.
Получаемые значения NaN, а значит weapon.param он видит как undefined.
edward_freedom, Понял вопрос. Нет, такого свойства нету! Я такой записью подразумевал, что вместо param у меня подставится тот ключ с которым вызывается метод.
Это неправильно? А как сделать тогда?
param это аргумент и переменная метода(как у функций это делается).
Потом этот метод вызывается с различными свойствами которые реально существуют у объекта Weapon (power, inst, agile и тд).
Все они целые числа. Это все работает нормально. Если я буду подставлять напрямую, например weapon.power или weapon.agile - все будет получаться как надо. Но я хочу использовать метод вместо этого. И вот он не работает.
edward_freedom, power это свойство объекта Weapon - число.
Объект Weapon это внешний объект который подставляется в свойство weapon при создании объекта класса Char.
Вот вы и ответили на мой вопрос. Спасибо большое!
Я тоже заметил, что выполняется у меня это 1 раз. Но видимо я где то пропустил что конструктор выполняется один раз и все.
Роман, Честно говоря я и думал что именно так я и делаю, как будто бы я сделал некий слот. )
Что подразумевается тогда под "вставлять" в slots оружие?
Перечислять массив объектов?
Хорошо, я понял, ты решил мою задачу спасибо. Но меня больше интересует вопрос ПОЧЕМУ, не работает так как у меня?
Что происходит, можешь объяснить? Почему он не хочет пересчитывать сумму x_power ?
Почему он берет старые не актуальные данные?
Первый раз он же выводит x_power как сумму и мы видим что он может складывать, и он складывает.
Но второй раз после изменения power , в x_power до сих пор в уравнении старое значение power.
Почему? Объясни пожалуйста чтобы я понял. В учебнике я такое не вычитаю.
Спасибо! Просто с геттерами и сеттерами код увеличивается в два раза!
А что если у меня свойств в 10 раз больше?
У меня их и есть на самом деле в 10 раз больше, просто я вырезал все, для примера они не нужны.
Неужели без геттеров и сеттеров это не сделать?
Мне же не нужна инкапсуляция по сути. Я просто хочу чтобы работало...
В случае если подразумевается приложение для мобильной платформы, создается API как дополнительный модуль к бэкенду, или переписывается вся логика в API ?
Эти правила базируются на каком-то рациональном смысле. Но я не понимаю какой рациональный смысл, в отказе от циклов внутри функции.