function Calc() {
let v = 0;
const proto = {
add(x) { v += x; },
subtract(x) { v -= x; },
divide(x) { x && (v /= x); },
multiply(x) { v *= x; }
};
const keys = Object.keys(proto);
const ctx = keys.reduce((acc, key) => {
const wrap = x => ((!isNaN(x) && proto[key](Number(x))), wrap);
return ((acc[key] = wrap), acc);
}, {
getResult: () => v,
reset: () => ((v = 0), ctx)
});
keys.forEach(key => Object.assign(ctx[key], ctx));
return ctx;
}
// через блок
mod some_module {
// тут изолированное пространство имен
pub fn hello() {
println!("Hello world");
}
}
fn main() {
some_module::hello(); // Hello world
}
// подключаем модуль из файла ./some_other_module/mod.rs или ./some_other_module.rs
mod some_other_module;
// добавлю пару констант, для простоты модификации
let rows = 2;
let cols = 2;
let matrix_a = vec![1,2,3,4];
let matrix_b = vec![5,6,7,8];
let mut matrix_c = vec![0; rows * cols]; // 0 - default, rows * cols - размер (4)
for row in 0..rows {
for col in 0..cols {
let mut vec_buf = 0;
for k in 0..2 {
vec_buf = vec_buf + matrix_a[row * 2 + k] * matrix_b[k * 2 + col];
}
matrix_c[row * 2 + col] = vec_buf; // теперь должно быть все ок
// так как спокойно передаем владение существующему элементу вектора
}
}
for (i, x) in matrix_c.iter().enumerate(){
println!(" элем = {:?}, значение = {:?}", i, x);
}
function recursiveRequest(requestData) {
return fetch(
//здесь формируем запрос из requestData
).then(response => response.json()).then(result => {
if(result.isFinal) return result; // тут условие
return recursiveRequest(result.nextRequest); //вызываем следующий запрос
});
}
recursiveRequest({}).then(finalResult => {
//работаем с последним результатом
});
const fs = require('fs'); // or import fs from 'fs'; with esm / experimental modules
function isFileExists(path) {
return new Promise((resolve, reject) => {
fs.access(path, fs.constants.F_OK, err => {
if(!err) return resolve(true);
if(err.code === 'ENOENT') return resolve(false);
reject(err);
});
});
}
Получается, что как бы проверка бессмысленная, можно просто обернутьв случае простого unlink можно, для более сложной логики лучше сначала проверить
var items = Object.values(msg).reduce((acc, curr) => {
curr.category.forEach(item => Object.assign(acc, {[item.id]: item.cat_name}));
return acc;
}, {});
const items = Object.values(msg).reduce(
(acc, curr) => Object.assign({}, acc, curr.category.reduce(
(acc, item) => Object.assign({}, acc, {[item.id]: item.cat_name}),
{})),
{});
Я понимаю, что хорошо, когда программист знает матмат программисту жизненного не обходим, без него никак...
</script>
нужно разбивать:$('.map').html('<script charset="utf-8" async src="https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A45374b4f36193c2c3bb5a22a9bffed35b78e3e041596ce43450258bbf7529fad&width=100%25&height=598&lang=ru_UA&scroll=false"> </sc' + 'ript>')
var script = document.createElement('script');
script.async = true;
script.src = 'https://api-maps.yandex.ru/services/constructor/1.0/js/?um=constructor%3A45374b4f36193c2c3bb5a22a9bffed35b78e3e041596ce43450258bbf7529fad&width=100%25&height=598&lang=ru_UA&scroll=false';
$('.map').append(script);
Что не так с кодом js?он некорректный с самой первой строки...
// тут очевидно было пропущено объявление переменной куда сохраняем полученный из DOM canvas
var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
// вангую, что тут не объявленные переменные, и их нужно объявить
var x = 0;
var y = 0;
var x1 = 0;
var y1 = 0;
var g = 4;
var b = 7;
// тут норм, но все же стоит включить себе линтер
// ибо порядок в коде == порядок в голове
var ground1 = new Image();
ground1.src = "Ground.png";
var pick1 = new Image();
pick1.src = "Pick.png";
// а вот в функции draw началась полная дичь...
function draw() {
ctx.clearRect(0,0,316,632); // очистку перенес внутрь функции отрисовки
// тут я вырезал addEventListener - ибо добавлять нового подписчика на каждой отрисовке - дичь полнейшая
// пристрелите того, кто Вас этому научил, так Вы сделаете этот мир лучше
if(g < b) {
ctx.drawImage(ground1, x, y);
x+=32;
if(x-32 > 290){
x = 0;
y+=32;
}
if(y-32 > 578){
y = 0;
x = 0;
}
}
// я так думаю эту картинку надо рисовать после фона
ctx.drawImage(pick1, x1, y1);
requestAnimationFrame(draw); //зациклим анимацию
}
// анимировать что-то по таймеру плохая затея, есть более подходящие инструменты
requestAnimationFrame(draw);
// подписку на событие клавиатуры вынес из отрисовки
// а саму отрисовку выкинул из обработчика
// его дело переменные пересчитывать, а рисовать будет draw
document.addEventListener("keydown", function pick(e) {
if(e.keyCode == 87){
y1-=32;
}
if(e.keyCode == 65){
x1-=32;
}
if(e.keyCode == 83){
y1+=32;
}
if(e.keyCode == 68){
x1+=32;
}
});