uz
Feedback
ToCode

ToCode

Kanalga Telegramโ€™da oโ€˜tish

ื˜ื™ืคื™ื ืงืฆืจื™ื ืœืžืชื›ื ืชื™ื ืžืืช ื™ื ื•ืŸ ืคืจืง

Ko'proq ko'rsatish
1 419
Obunachilar
-124 soatlar
Ma'lumot yo'q7 kunlar
-230 kunlar
Postlar arxiv
ToCode
1 419
# ืงื™ืžืคื•ืœ ืชื•ื›ื ื™ืช Qt ืœ Web Assembly ืœืคื ื™ ื›ืžื” ื™ืžื™ื ืฉื•ื—ืจืจื” ื’ื™ืจืกื” 6.4 ืฉืœ Qt ื•ื‘ืขื™ื ื™ื™ ื”ืคื™ืฆ'ืจ ื”ื›ื™ ืžืœื”ื™ื‘ ืฉื ื”ื•ื ื”ืชืžื™ื›ื” ื”ืžื•ื‘ื ื™ืช ื‘ Web Assembly. ื”ื™ื•ื ืžื” ืฉื›ื‘ืจ ืงื™ื™ื ื•ืขื•ื‘ื“ ื‘ Qt ื”ื•ื: 1. ืชืžื™ื›ื” ืžืœืื” ืฉืœ Qt Creator ื‘ Web Assembly, ื›ืš ืฉืืชื ื™ื›ื•ืœื™ื ืœืงื—ืช ื›ืœ ืคืจื•ื™ืงื˜ Qt ืฉื›ื‘ืจ ื™ืฉ ืœื›ื (ื•ื•ื™ื“ื’'ื˜ืก ืื• QML) ื•ืคืฉื•ื˜ ืœืงืžืคืœ ืื•ืชื• ืœืงื•ื‘ืฅ wasm. 2. ืื™ืจื’ื•ืŸ ืฉืœ ื›ืœ ื”ืงื•ื“ ืฉืžืกื‘ื™ื‘ ื›ืš ืฉื”ื‘ื ื™ื” ืžื™ื™ืฆืจืช ืœื›ื ืชื™ืงื™ื™ืช dist ืขื ืงื•ื‘ืฅ HTML ืจืืฉื™ ื•ืงื‘ืฆื™ JavaScript, ื›ืš ืฉื›ืœ ืžื” ืฉืฆืจื™ืš ืœืขืฉื•ืช ื–ื” ืœื˜ืขื•ืŸ ืืช ื”ืงื•ื‘ืฅ HTML ื•ื”ืชื•ื›ื ื™ืช ืจืฆื” ื‘ื“ืคื“ืคืŸ, ื•ื ืจืื™ืช ื‘ื“ื™ื•ืง ื›ืžื• ืฉื”ื™ื ื ืจืืชื” ื›ืืคืœื™ืงืฆื™ื™ืช Desktop. 3. ืžื™ืžื•ืฉ ืฉืœ ืงื•ื“ ืขื•ื˜ืฃ ืกื‘ื™ื‘ ืžื ื’ื ื•ื ื™ื ืฉืœ ื”ื“ืคื“ืคืŸ, ืœืžืฉืœ ื‘ืฉื‘ื™ืœ ืœืงืจื•ื ืงื‘ืฆื™ื, ืœืคืชื•ื— ื‘ืงืฉื•ืช ืจืฉืช ืื• ื›ืœ ื“ื‘ืจ ืื—ืจ ืฉืืคืœื™ืงืฆื™ื™ืช Desktop ื”ื™ืชื” ืขื•ืฉื”. ืื– ืขื›ืฉื™ื• ืงืจื™ืื” ืœืคื•ื ืงืฆื™ื” QFileDialog::getOpenFileContent ื‘ืขืฆื ืžืฉืชืžืฉืช ื‘ื™ื›ื•ืœื•ืช ืฉืœ ื”ื“ืคื“ืคืŸ ื›ื“ื™ ืœื”ืงืคื™ืฅ ืœืžืฉืชืžืฉ ื—ืœื•ืŸ ืœื‘ื—ื™ืจืช ืงื•ื‘ืฅ ื•ืœื˜ืขื•ืŸ ืื•ืชื•. ื›ืจื’ืข ื”ื—ื™ืกืจื•ืŸ ื”ืžืจื›ื–ื™ ื”ื•ื ื’ื•ื“ืœ ื”ืงื‘ืฆื™ื. ืชื•ื›ื ื™ืช Qt ืคืฉื•ื˜ื” ืฉื‘ื ื™ืชื™ ื•ืงื™ืžืคืœืชื™ ืœ Web Assembly (ืงื•ื“ ื‘ื”ืžืฉืš ื”ืคื•ืกื˜) ื”ื’ื™ืขื” ืœ 19 ืžื’ื” ืื—ืจื™ ืงื•ืžืคื™ืœืฆื™ื”. ืื ื™ ืžืงื•ื•ื” ืฉื‘ื’ื™ืจืกืื•ืช ื”ืขืชื™ื“ื™ื•ืช ืฉืœ Qt ื”ื ื™ืขื‘ื“ื• ืขืœ ื–ื” ื•ื™ืฆืœื™ื—ื• ืœืจื“ืช ืœืžืกืคืจ ื—ื“ ืกืคืจืชื™ ืฉืœ ืžื’ื•ืช. ื“ืžื•? ื‘ืจื•ืจ. ื–ื” ืงื•ื“ Qt ืฉื‘ื ื™ืชื™ ื‘ Qt Creator. ื”ืชื•ื›ื ื™ืช ื”ื™ื ื‘ืกืš ื”ื›ืœ ืงื•ื‘ืฅ ืื—ื“ main.cpp ืฉื‘ื•ื ื” ืžื•ื ื” ืœื—ื™ืฆื•ืช:
#include <QApplication>
#include <QtWidgets>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget w;
    auto clicked = 0;
    auto btn = new QPushButton("Add 1");
    auto result = new QLabel(QString("Button clicked %1 times").arg(clicked));
    w.setLayout(new QVBoxLayout());
    w.layout()->addWidget(new QLabel("Hello World"));
    w.layout()->addWidget(result);

    w.layout()->addWidget(btn);

    QObject::connect(btn, &QPushButton::clicked, [&]() {
        clicked++;
        result->setText(QString("Button clicked %1 times").arg(clicked));
    });

    w.show();
    return a.exec();
}
ื™ืฉ ืคื” ื—ืœื•ืŸ, ื‘ืชื•ื›ื• ืฉืชื™ ืชื™ื‘ื•ืช ื˜ืงืกื˜ ื•ื›ืคืชื•ืจ, ื•ื›ืœ ืคืขื ืฉืœื•ื—ืฆื™ื ืขืœ ื”ื›ืคืชื•ืจ ืขืจืš ื”ืžืฉืชื ื” ืขื•ืœื” ื‘ 1 ื•ื”ื˜ืงืกื˜ ื‘ืชื™ื‘ื” ืžืฉืชื ื”. ื”ืžืงื•ื ืขืœ ื”ืžืกืš ืžื—ื•ืœืง ื‘ื™ืŸ ื”ื›ืคืชื•ืจ ื•ืชื™ื‘ื•ืช ื”ื˜ืงืกื˜ ื•ื”ืจื›ื™ื‘ื™ื ื’ื“ืœื™ื ืœืคื™ ื”ื›ืœืœื™ื ืฉืœ Qt ื›ื“ื™ ืœืžืœื ืืช ื›ืœ ื”ื—ืœื•ืŸ. ืื—ืจื™ ืงื•ืžืคื™ืœืฆื™ื” ืžืงื‘ืœื™ื ืงื•ื‘ืฅ wasm ืขื ืงื™, ืฉื ื™ ืงื‘ืฆื™ js ื•ืงื•ื‘ืฅ html. ืืคืฉืจ ืœืจืื•ืช ืืช ื›ื•ืœื ื‘ืจื™ืคื• ืฉื™ืฆืจืชื™ ื›ืืŸ: https://github.com/ynonp/qt-wasm-demo/ ื•ื“ืžื• ืจืฅ ื‘ื’ื™ื˜ื”ืื‘ ืคื™ื™ื’'ืก ื‘ืงื™ืฉื•ืจ ื”ื–ื”: https://ynonp.github.io/qt-wasm-demo/ ืคืฉื•ื˜ ืชืœื—ืฆื• ืขืœ ื”ื›ืคืชื•ืจ ืฉื‘ืชื—ืชื™ืช ื”ืžืกืš ื•ืชืจืื• ืืช ื”ื˜ืงืกื˜ ื‘ืชื™ื‘ื” ืžืฉืชื ื”. ืื ื’ื ืืชื ืจื•ืฆื™ื ืœืฉื—ืง ืขื ื”ื’ื™ืจืกื” ื›ืœ ืžื” ืฉืฆืจื™ืš ื–ื” ืœื”ื•ืจื™ื“ ื•ืœื”ืชืงื™ืŸ ืืช Qt ืžื”ืงื™ืฉื•ืจ ื”ื–ื”: https://www.qt.io/download-qt-installer ื•ืœื”ืชืงื™ืŸ ืืช Emscripten ืžื”ืงื™ืฉื•ืจ ื”ื–ื”: https://emscripten.org/docs/getting_started/downloads.html ื .ื‘. ืžื‘ื—ื™ื ืช ืจื™ืฉื™ื•ืŸ ืžืžื” ืฉืื ื™ ืžื‘ื™ืŸ ื‘ืฉื‘ื™ืœ ืœื‘ื ื•ืช ืืคืœื™ืงืฆื™ื•ืช ืžืกื—ืจื™ื•ืช ื™ืฉ ืœืงื ื•ืช ืจื™ืฉื™ื•ืŸ ืžืกื—ืจื™ ื‘ื’ืœืœ ืฉื”ืงื•ืžืคื™ืœืฆื™ื” ืœ Web Assembly ื”ื™ื ืกื˜ื˜ื™ืช. ืขื•ืฉื” ืจื•ืฉื ืฉื”ื ืขื•ื‘ื“ื™ื ืขืœ ืืคืฉืจื•ืช ืœืงื•ืžืคื™ืœืฆื™ื” ื“ื™ื ืžื™ืช ืžื” ืฉื™ืืคืฉืจ ืœื”ืฉืชืžืฉ ื‘ืจื™ืฉื™ื•ืŸ ื” LGPL ื•ืœื‘ื ื•ืช ื’ื ื™ื™ืฉื•ืžื™ื ืžืกื—ืจื™ื™ื ื‘ืงื•ื“ ืกื’ื•ืจ ื‘ Web Assembly.

ToCode
1 419
let sol2 = part1(values_for_part2.iter());
dbg!(sol2);
## ื”ืคื•ื ืงืฆื™ื” part1 ื ืžืฉื™ืš ืœืงืจื™ืืช ืคื•ื ืงืฆื™ื™ืช ื”ืขื–ืจ:
fn part1<'a>(it: impl Iterator<Item=&'a u32>) -> u32 {
    let mut increases = 0;
    let mut previous_line = f64::INFINITY;

    for value in it {
        if f64::from(*value) > previous_line {
            increases += 1;
        }
        previous_line = f64::from(*value);
    }

    return increases;
}
ื”ื—ืชื™ืžื” ืฉืœ ื”ืคื•ื ืงืฆื™ื” ื”ื™ื ื”ื—ืœืง ื”ื›ื™ ืงืฉื” ื›ืืŸ - ื”ืคื•ื ืงืฆื™ื” ืžืงื‘ืœืช ืื™ื˜ืจื˜ื•ืจ ืœ &u32, ื›ืœื•ืžืจ ืื™ื˜ืจื˜ื•ืจ ืฉื‘ื• ืžื™ืฉื”ื• ืื—ืจ ืฆืจื™ืš ืœืฉืžื•ืจ ืขืœ ื”ืขืจื›ื™ื. ื–ืืช ื”ืกื™ื‘ื” ืฉืœื ื™ื›ื•ืœืชื™ ืœื”ืขื‘ื™ืจ ืœืคื•ื ืงืฆื™ื” ื™ืฉื™ืจื•ืช ืืช ื”ืชื•ืฆืื” ืฉืœ map - ื‘ื”ื’ื“ืจืช ื”ืคื•ื ืงืฆื™ื” ื›ืชื‘ืชื™ ื‘ืžืคื•ืจืฉ ืฉืื ื™ ืœื ืจื•ืฆื” ืœืงื—ืช ื‘ืขืœื•ืช ืขืœ ื”ืขืจื›ื™ื ื•ืื ื™ ืจืง ืงื•ืจื ืื•ืชื. ื–ืืช ื”ืžืฉืžืขื•ืช ืฉืœ ืกื™ืžืŸ ื” &. ืžื‘ื—ื™ื ืช ื”ืงื•ื“ ื”ืžื™ืœื” mut ืœืคื ื™ ืฉื ืžืฉืชื ื” ืื•ืžืจืช ืฉืื ื™ ื”ื•ืœืš ืœืฉื ื•ืช ืื•ืชื• ื‘ืžื”ืœืš ื”ืจื™ืฆื” (ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ื”ื™ื ืฉืžืฉืชื ื™ื ืžืงื‘ืœื™ื ืขืจืš ืจืง ืคืขื ืื—ืช - ื›ืœื•ืžืจ const). ื•ื‘ืœื•ืœืื” ื” for ืื ื™ ื‘ื•ื“ืง ืื ื”ืขืจืš ื”ื ื•ื›ื—ื™ ื’ื“ื•ืœ ืžื”ืขืจืš ื”ืงื•ื“ื ื•ืื ื›ืŸ ืžืขืœื” ืืช ื”ืžื•ื ื”. ื”ื”ืžืจื” ืœ Float ื ื“ืจืฉืช ื›ื™ ื”ืขืจืš ื”ืจืืฉื•ื ื™ ืฉืœ previous_line ื”ื™ื” ืื™ื ืกื•ืฃ (ื›ื“ื™ ืฉื”ืื™ื‘ืจ ื”ืจืืฉื•ืŸ ืœื ื™ื”ื™ื” ื’ื“ื•ืœ ืžืžื ื•), ื•ืื™ื ืกื•ืฃ ื‘ืจืืกื˜ ื”ื•ื ืžื˜ื™ืคื•ืก float. ## ืœืืŸ ืœื”ืžืฉื™ืš ืžื›ืืŸ ืื ื”ืชื•ื›ื ื™ืช ืขืฉืชื” ืœื›ื ื—ืฉืง ืœืœืžื•ื“ ืขื•ื“ ืจืืกื˜ ืื ื™ ืžืื•ื“ ืžืžืœื™ืฅ ืขืœ ื”ืกืคืจ ื”ื—ื™ื ืžื™ ื”ืจืฉืžื™ ืฉืœื”ื ื›ืืŸ: https://doc.rust-lang.org/stable/book/ ืื• ืขืœ ื”ืžื“ืจื™ืš Rust By Example ื‘ืงื™ืฉื•ืจ ื”ื–ื”: https://doc.rust-lang.org/stable/rust-by-example/

ToCode
1 419
ื”ืคื•ื ืงืฆื™ื” main ื‘ืงื•ื“ ืžื—ื•ืœืงืช ื’ื ื”ื™ื ืœืžืกืคืจ ื—ืœืงื™ื: 1. ืคื™ืขื ื•ื— ืคืจืžื˜ืจื™ื ืฉืขื‘ืจื• ืžืฉื•ืจืช ื”ืคืงื•ื“ื”. 2. ืงืจื™ืืช ืงื•ื‘ืฅ ื”ืงืœื˜. 3. ื”ืžืจืช ื”ืงืœื˜ ืœืžืกืคืจื™ื. 4. ื”ืคืขืœืช ืคื•ื ืงืฆื™ื™ืช ื”ืขื–ืจ ื›ื“ื™ ืœืกืคื•ืจ ื›ืžื” ืฉื•ืจื•ืช ื’ื“ื•ืœื•ืช ื™ื•ืชืจ ืžืืœื” ืฉืœืคื ื™ื”ืŸ. 5. ื”ืžืจืช ื”ืงืœื˜ ืœืงื‘ื•ืฆื•ืช ื•ืกื›ื™ืžืช ื”ืžืกืคืจื™ื ื‘ื›ืœ ืงื‘ื•ืฆื”. 6. ืงืจื™ืื” ื ื•ืกืคืช ืœืคื•ื ืงืฆื™ื™ืช ื”ืขื–ืจ ื›ื“ื™ ืœื—ืฉื‘ ืืช ื”ื—ืœืง ื”ืฉื ื™. ื‘ื—ืœืง ื”ืจืืฉื•ืŸ ืื ื™ ืœื•ืงื— ืืช ื”ืคืจืžื˜ืจ ื”ืจืืฉื•ืŸ ืžืฉื•ืจืช ื”ืคืงื•ื“ื” ืœืชื•ืš ืžืฉืชื ื” ื‘ืฉื file_path:
let args: Vec<String> = env::args().collect();
let file_path = &args[1];
ื”ืคืงื•ื“ื” collect ืœื•ืงื—ืช ืžืฉื”ื• ืฉืืคืฉืจ ืœืจื•ืฅ ืขืœื™ื• (ืื™ื˜ืจื˜ื•ืจ) ื•ื”ื•ืคื›ืช ืื•ืชื• ืœืžื‘ื ื” ื ืชื•ื ื™ื. ื‘ืฉื•ืจื” ื”ืจืืฉื•ื ื” ืœื•ืงื—ื™ื ืืช ื›ืœ ื”ืืจื’ื•ืžื ื˜ื™ื ืฉื”ืชื•ื›ื ื™ืช ืงื™ื‘ืœื” ื•ืฉื•ืžืจื™ื ืื•ืชื ื‘ืžื‘ื ื” ื ืชื•ื ื™ื ืžืกื•ื’ ื•ืงื˜ื•ืจ. ืฉื•ืจื” ืฉื ื™ื” ืœื•ืงื—ืช ืืช ื”ืชื ื”ืจืืฉื•ืŸ ื‘ื•ืงื˜ื•ืจ ื•ืฉื•ืžืจืช ืื•ืชื• ื‘ืžืฉืชื ื” ื‘ืฉื file_path. ื”ืกื™ืžืŸ ื”ืžื™ื•ื—ื“ & ืžืกืžืŸ ืœื ื• ื•ืœืจืืกื˜ ืฉืื ื—ื ื• ืœื ืจื•ืฆื™ื ืœื”ืฉืชืœื˜ ืขืœ ื”ืขืจืš ืืœื ืจืง "ืœืฉืื•ืœ" ืื•ืชื•, ื›ืœื•ืžืจ ืœืงื—ืช Reference ืืœื™ื•. ื”ืงื•ืžืคื™ื™ืœืจ ื™ื“ืื’ ืฉื›ืœ ืขื•ื“ ื™ืฉ Reference ืคืขื™ืœ ืœืขืจืš ืžืกื•ื™ื ืื– ืงื•ื“ ืื—ืจ ืœื ื™ืฉื ื” ืื• ื™ืžื—ืง ืืช ื”ืขืจืš ื”ื–ื”. ื ืžืฉื™ืš ืœืงืจื™ืืช ื”ืงื•ื‘ืฅ ื•ืคื” ืื ื—ื ื• ืจื•ืื™ื ืื™ืš ืจืืกื˜ ืขื•ื–ืจ ืœื ื• ืœื›ืชื•ื‘ ืชื•ื›ื ื™ื•ืช ื‘ื˜ื•ื—ื•ืช ื™ื•ืชืจ By Design:
let contents = match fs::read_to_string(file_path) {
    Ok(c) => c,
    Err(error) => panic!("Problem opening the file: {} - {:?}", file_path, error),
};
ื”ืคืงื•ื“ื” fs::read_to_string ืœื•ืงื—ืช ืฉื ืงื•ื‘ืฅ ื•ืงื•ืจืืช ืืช ื”ืงื•ื‘ืฅ ืœืžื—ืจื•ื–ืช. ืื‘ืœ ืงืจื™ืื” ืฉืœ ืงื•ื‘ืฅ ื–ื” ืžืฉื”ื• ืฉื™ื›ื•ืœ ืœื”ื™ื›ืฉืœ - ื•ืœื›ืŸ ื”ืคืงื•ื“ื” ืžื—ื–ื™ืจื” ืžืฉื”ื• ืฉื ืงืจื Result. ืœ Result ื™ืฉ ืฉืชื™ ืืคืฉืจื•ื™ื•ืช, ืื• ืฉื”ื•ื ืชืงื™ืŸ ื•ืื– ื™ืฉ ืœื ื• ืืช ื”ืžื—ืจื•ื–ืช, ืื• ืฉื”ื•ื ืžื™ื™ืฆื’ ืฉื’ื™ืื”. ื”ืคืงื•ื“ื” match ืžืืคืฉืจืช ืœื ื• ื•ืœืงื•ืžืคื™ื™ืœืจ ืœื˜ืคืœ ื‘ื›ืžื” ืืคืฉืจื•ื™ื•ืช ื•ืžื•ื•ื“ืืช ืฉื˜ื™ืคืœื ื• ื‘ื›ื•ืœืŸ, ื•ื”ืคืงื•ื“ื” panic ื–ื•ืจืงืช ืฉื’ื™ืื” ื•ืžืจืกืงืช ืืช ื”ืชื•ื›ื ื™ืช. ืื ืื ื™ ืžื ืกื” ืœื•ื•ืชืจ ืขืœ ืงื•ื“ ื”ื˜ื™ืคื•ืœ ื‘ืฉื’ื™ืื•ืช ื•ืœื›ืชื•ื‘ ืžืฉื”ื• ื›ื–ื”:
let contents = fs::read_to_string(file_path);
let lines = contents.split("\n");
ื”ืชื•ื›ื ื™ืช ืœื ืžืชืงืžืคืœืช ื›ื™ ืœ Result ืื™ืŸ ืคื•ื ืงืฆื™ื” ื‘ืฉื split. ืงื™ืฆื•ืจ ื“ืจืš ืฉื›ืŸ ืืคืฉืจ ืœื›ืชื•ื‘ ื•ื™ืขื‘ื•ื“ ื”ื•ื:
let contents = fs::read_to_string(file_path).expect("Error");
let lines = contents.split("\n");
ื•ื–ื” ื™ื™ืชืŸ ื‘ื“ื™ื•ืง ืืช ืื•ืชื” ื”ืชื ื”ื’ื•ืช. ืขื›ืฉื™ื• ืฉื™ืฉ ืœื ื• ืืช ื”ืขืจื›ื™ื ื•ื’ื ืคื™ืฆืœื ื• ืื•ืชื ืœืฉื•ืจื•ืช ื”ื’ื™ืข ื”ื–ืžืŸ ืœื”ืคื•ืš ืืช ื”ืฉื•ืจื•ืช ืœื•ืงื˜ื•ืจ ืฉืœ ืžืกืคืจื™ื. ื‘ืฉื‘ื™ืœ ื–ื” ืื ื™ ืžืžืฉื™ืš ืœืฉื•ืจื”:
let values: Vec<u32> = lines
    .filter_map(|v| v.trim().parse::<u32>().ok())
    .collect();
ื•ืคื” ืื ื—ื ื• ืฉื•ื‘ ืจื•ืื™ื ืืช ืจืืกื˜ ื•ืžื ื’ื ื•ื ื™ ื ื™ื”ื•ืœ ื”ืฉื’ื™ืื•ืช ืฉืœื”. ื”ืคืงื•ื“ื” filter_map ืžืคืขื™ืœื” ืืช ื”ื‘ืœื•ืง ืฉื”ื™ื ืงื™ื‘ืœื” ืขืœ ื›ืœ ื”ืื™ื‘ืจื™ื ื‘ืื™ื˜ืจื˜ื•ืจ, ื•ืชืกื ืŸ ืžื”ื ื”ื—ื•ืฆื” ืืช ื›ืœ ื”ืจื™ืงื™ื. ื”ืคืงื•ื“ื” ok ืœื•ืงื—ืช Result ื•ืžื—ื–ื™ืจื” ืืช ื”ืขืจืš ืจืง ืื ื” Result ืชืงื™ืŸ, ืื—ืจืช ืžื—ื–ื™ืจื” ืขืจืš ืจื™ืง. ืœื›ืŸ ื”ื‘ืœื•ืง ืฉืœื ื• ื™ืžื—ืง ืืช ื”ืจื•ื•ื—ื™ื ืžืชื—ื™ืœื” ื•ืžืกื•ืฃ ื”ืฉื•ืจื”, ื™ืคืขื ื— ืืช ื”ืžื—ืจื•ื–ืช ืœืžืกืคืจ, ื™ืกื ืŸ ื”ื—ื•ืฆื” ืืช ื›ืœ ืžื” ืฉืœื ื”ืฆืœื™ื— ืœืคืขื ื— ื•ืžื™ื™ืฆืจ ืžื›ืœ ื”ืขืกืง ื•ืงื˜ื•ืจ. ืืคืฉืจ ืœืจืื•ืช ืฉืื ื™ ืžืฆื™ื™ืŸ ื˜ื™ืคื•ืกื™ื ืจืง ืื™ืคื” ืฉืื ื™ ืฆืจื™ืš ืื•ืชื - ืื ื™ ืฆืจื™ืš ืœื”ื’ื™ื“ ืœ collect ืื™ื–ื” ืกื•ื’ ืžื‘ื ื” ื ืชื•ื ื™ื ืœื™ื™ืฆืจ, ื•ืื ื™ ืฆืจื™ืš ืœื”ื’ื™ื“ ืœ parse ืœืื™ื–ื” ื˜ื™ืคื•ืก ืœื ืกื•ืช ืœืคืขื ื—. ื”ื˜ื™ืคื•ืก u32 ื”ื•ื Unsigned Integer ื‘ืื•ืจืš 32 ื‘ื™ื˜ื™ื. ืขื›ืฉื™ื• ืฉื™ืฉ ืœื™ ื•ืงื˜ื•ืจ ืขื ื›ืœ ื”ืขืจื›ื™ื ืื ื™ ื™ื›ื•ืœ ืœื”ืขื‘ื™ืจ ืื•ืชื• ืœืคื•ื ืงืฆื™ื™ืช ื”ืขื–ืจ ืฉืœื™ ืฉืกื•ืคืจืช ื›ืžื” ืขืจื›ื™ื ื’ื“ื•ืœื™ื ื™ื•ืชืจ ืžืืœื” ืฉืœืคื ื™ื”ื. ื”ืคื•ื ืงืฆื™ื” ืžืฆืคื” ืœืงื‘ืœ ืื™ื˜ืจื˜ื•ืจ ื•ืœื›ืŸ ื”ืงื•ื“:
let sol1 = part1(values.iter());
dbg!(sol1);
ื”ืคืงื•ื“ื” dbg! ืคืฉื•ื˜ ืžื“ืคื™ืกื” ืืช ื”ืขืจืš ืฉืงื™ื‘ืœื” ืœืฆืจื›ื™ debug. ื‘ืฉื‘ื™ืœ ื”ื—ืœืง ื”ืฉื ื™ ืฉืœ ื”ื—ืœื•ืงื” ืœืงื‘ื•ืฆื•ืช ื”ืงื•ื“ ืงืฆืช ื™ื•ืชืจ ื™ืฆื™ืจืชื™ ืื‘ืœ ืœื ื™ื•ืชืจ ืžื“ื™. ื”ืžืชื•ื“ื” zip ืฉืœ ืื™ื˜ืจื˜ื•ืจ ืœื•ืงื—ืช ืื™ื˜ืจื˜ื•ืจ ืื—ืจ ื•ืžื—ื–ื™ืจื” ื–ื•ื’ ืฉืœ ืขืจื›ื™ื ืžื›ืœ ืื—ื“ ืžื”ืื™ื˜ืจื˜ื•ืจื™ื. ื”ืคืงื•ื“ื” skip ืžื“ืœื’ืช ืขืœ ืื™ื‘ืจ ื‘ืื™ื˜ืจื˜ื•ืจ ื•ืœื›ืŸ ืื ื™ ื™ื•ืฆืจ 3 ืื™ื˜ืจื˜ื•ืจื™ื ื›ืœ ืื—ื“ ืžืชื—ื™ืœ ืžืื™ื‘ืจ ืื—ื“ ืงื“ื™ืžื”:
let it1 = values.iter();
let it2 = values.iter().skip(1);
let it3 = values.iter().skip(2);
ืžื—ื‘ืจ ืืช ืฉืœื•ืฉืชื ืขื zip ืขืœ zip ื•ืžืฉืชืžืฉ ื‘ map ื›ื“ื™ ืœืกื›ื•ื ืืช ื”ืื™ื‘ืจื™ื ื‘ื›ืœ ืฉืœืฉื”:
let values_for_part2: Vec<u32> = it1.zip(it2).zip(it3).map(|((a, b), c)| a + b + c).collect();
ืืช ื”ืชื•ืฆืื” ืื ื™ ืฉื•ืžืจ ืœื•ืงื˜ื•ืจ ื—ื“ืฉ, ื•ื–ืืช ื ืงื•ื“ื” ืฉืœ ืจืืกื˜ ืฉื™ื›ื•ืœื” ืœื”ืจื’ื™ื– ืžืชื—ื™ืœื™ื ื›ืžื•ื ื™, ื›ื™ ืชืžื™ื“ ืฆืจื™ืš ืœืฉื™ื ืœื‘ ืžื™ ืฉื•ืžืจ ืขืœ ื”ืขืจื›ื™ื. ืชื›ืฃ ื ืžืฉื™ืš ืœืงืจื•ื ืืช ืคื•ื ืงืฆื™ื™ืช ื”ืขื–ืจ ื•ื ืจืื” ืœืžื” ื”ื™ื ืœื ืžื•ื›ื ื” ืœืงื‘ืœ ืขืจื›ื™ื ื‘ืžืชื ื” ื•ื”ื™ื ืžืžืฉ ื—ื™ื™ื‘ืช ืฉืžื™ืฉื”ื• ืื—ืจ ืดื™ื—ื–ื™ืงืด ืืช ื”ืขืจื›ื™ื ื›ื“ื™ ืฉืœื ื™ื™ืžื—ืงื•. ืœืกื™ื•ื ื ืขื‘ื™ืจ ืื™ื˜ืจื˜ื•ืจ ืขืœ ื”ื•ืงื˜ื•ืจ ืœืคื•ื ืงืฆื™ื™ืช ื”ืขื–ืจ ื•ืœื”ื“ืคื™ืก ืืช ื”ืชื•ืฆืื” ืฉืœ ื”ื—ืœืง ื”ืฉื ื™:

ToCode
1 419
# ืฉืœื•ื ืขื•ืœื ื—ืœื•ื“ ืฉืคืช ื”ืชื›ื ื•ืช Rust ืžืงื‘ืœืช ื”ืจื‘ื” ืชืฉื•ืžืช ืœื‘ ื—ื™ื•ื‘ื™ืช ื‘ืจืฉืช ื•ืžืกื™ื‘ื” ื˜ื•ื‘ื”. ืœืื—ืจื•ื ื” ื”ืชื—ืœืชื™ ืœืฉื—ืง ืื™ืชื” ื•ืื ื™ ืจื•ืฆื” ืœืฉืชืฃ ืคื” ืชื•ื›ื ื™ืช ืจืืฉื•ื ื” ืฉื›ืชื‘ืชื™ ืขื ื›ืžื” ื“ื‘ืจื™ื ืฉืื”ื‘ืชื™ ื‘ืฉืคื”. ื™ืฉ ืกื™ื›ื•ื™ ืœื ืจืข ืฉื—ืœืง ืžื”ื“ื‘ืจื™ื ื‘ืคื•ืกื˜ ื”ื–ื” ืœื ื™ืฆืื• ืžื“ื•ื™ืงื™ื ื›ื™ ื‘ื›ืœ ื–ืืช ืื ื™ ืขื ืจืืกื˜ ืจืง ื›ืžื” ื™ืžื™ื ืื– ืื™ืคื” ืฉืื ื™ ืžืคืกืคืก ืื• ืฉืืคืฉืจ ื”ื™ื” ืœื›ืชื•ื‘ ืงื•ื“ ืคืฉื•ื˜ ื™ื•ืชืจ ืžื•ื–ืžื ื™ื ืœืชืงืŸ ืื•ืชื™ ื‘ืชื’ื•ื‘ื•ืช. ## ืงืฆืช ืขืœ ืจืืกื˜ ืจืืกื˜ ืคื•ืชื—ื” ื‘ืžื•ื–ื™ืœื” ืขืœ ื™ื“ื™ Graydon Hoare ื•ื”ื•ืคื™ืขื” ืœืจืืฉื•ื ื” ื‘ื™ื•ืœื™ 2010. ื’ืจื™ื™ื“ื•ืŸ ืขื‘ื“ ื‘ืžื•ื–ื™ืœื” ื‘ื–ืžืŸ ื”ืคื™ืชื•ื— ื•ื”ืขื™ืฆื•ื‘ ืฉืœ ื”ืฉืคื”, ื•ื’ื™ืจืกื” ื™ืฆื™ื‘ื” ืจืืฉื•ื ื” ื™ืฆืื” ื‘ 2014. ื”ื™ื•ื ืžืฉืชืžืฉื™ื ื‘ืจืืกื˜ ื‘ื—ื‘ืจื•ืช ืžื•ื‘ื™ืœื•ืช ื‘ืชืขืฉื™ื” ื›ื•ืœืœ ืืžื–ื•ืŸ, ื“ื™ืกืงื•ืจื“, ื“ืจื•ืคื‘ื•ืงืก, ืคื™ื™ืกื‘ื•ืง, ื’ื•ื’ืœ ื•ืžื™ื™ืงืจื•ืกื•ืคื˜. ื”ื—ืœ ืž 2021 ื”ืคื™ืชื•ื— ืฉืœ ืจืืกื˜ ืžื ื•ื”ืœ ื•ืžืžื•ืžืŸ ื“ืจืš ื” Rust Foundation ืฉื”ื•ืงื ื›ืฉื™ืชื•ืฃ ืคืขื•ืœื” ื‘ื™ืŸ AWS, Huawei, Google, Microsoft ื• Mozilla. ื”ืฉืคื” ืขืฆืžื” ื ื•ืขื“ื” ืœืคื™ืชื•ื— ื™ื™ืฉื•ืžื™ ืžืขืจื›ืช. ื”ื™ื ืžื”ื™ืจื” ื›ืžื• C++, ืžืชืงืžืคืœืช, ื›ื•ืœืœืช ืžื ื’ื ื•ืŸ ื ื™ื”ื•ืœ ื—ื‘ื™ืœื•ืช ื•ืชืœื•ื™ื•ืช ืžื•ื‘ื ื” ื‘ืฉื cargo. ื”ื™ื ื‘ื˜ื•ื—ื” ื™ื•ืชืจ ืž C++ ื•ื”ื›ืชื™ื‘ื” ื‘ืจืืกื˜ ืžื”ื ื” ื‘ื”ืจื‘ื”. ืจืืกื˜ ื›ื•ืœืœืช ืžืขืจื›ืช ื˜ื™ืคื•ืกื™ื ื ื•ืงืฉื” ื›ืš ืฉืœื›ืœ ื“ื‘ืจ ื™ืฉ ื˜ื™ืคื•ืก, ื•ืžืฉืœื‘ืช ืืช ื–ื” ืขื Type Inference ื›ืš ืฉืื ื—ื ื• ื›ืžืขื˜ ืœื ืฆืจื™ื›ื™ื ืœื›ืชื•ื‘ ื”ื’ื“ืจื•ืช ืœื˜ื™ืคื•ืกื™ื. ื”ื™ื ืžืชืงืžืคืœืช ืœื›ืœ ื”ืคืœื˜ืคื•ืจืžื•ืช ื•ื›ื•ืœืœืช ืžื•ื“ืœ ื ื™ื”ื•ืœ ื–ื™ื›ืจื•ืŸ ื—ื“ืฉื ื™ (ืฉืขื“ื™ื™ืŸ ืœื ื”ื‘ื ืชื™ ืื•ืชื• ืขื“ ื”ืกื•ืฃ) ืฉืžืืคืฉืจ ืœืงื•ืžืคื™ื™ืœืจ ืœื“ืื•ื’ ืœื ื™ืงื•ื™ ื”ื–ื™ื›ืจื•ืŸ ื‘ืœื™ ืœื”ื–ื“ืงืง ืœ Garbage Collector ืื• Reference Count. ## ื”ืชื•ื›ื ื™ืช - ืชืจื’ื™ืœ ืจืืฉื•ืŸ ืฉืœ AoC 2021 ื‘ืฉื‘ื™ืœ ืœื”ื‘ื™ืŸ ืืช ืจืืกื˜ ืงืฆืช ืžืขื‘ืจ ืœ Tutorail ื”ืจืืฉื•ืŸ ื”ืœื›ืชื™ ืœืžืžืฉ ืืช ื”ืชืจื’ื™ืœ ื”ืจืืฉื•ืŸ ืž Advent Of Code ื”ืื—ืจื•ืŸ. ืขื ื”ื–ืžืŸ ืื•ืœื™ ืืžืžืฉ ื’ื ืืช ื”ื‘ืื™ื. ื‘ืชืจื’ื™ืœ ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœืงืจื•ื ืงื•ื‘ืฅ ื˜ืงืกื˜ ืฉืžื›ื™ืœ ืžืกืคืจื™ื ื•ืœื”ื’ื™ื“ ื›ืžื” ืžื”ืฉื•ืจื•ืช ื‘ืงื•ื‘ืฅ ืžื›ื™ืœื•ืช ืžืกืคืจ ืฉื’ื“ื•ืœ ื™ื•ืชืจ ืžื”ืžืกืคืจ ืฉื”ื™ื” ืงื•ื“ื. ืœื“ื•ื’ืžื” ืื ื”ืงื•ื‘ืฅ ืžื›ื™ืœ ืืช:
199
200
208
210
200
207
240
269
260
263
ืื– ืืคืฉืจ ืœืจืื•ืช ืฉ 7 ืฉื•ืจื•ืช ื”ืŸ ื’ื“ื•ืœื•ืช ื™ื•ืชืจ ืžื”ืฉื•ืจื” ืฉืœืคื ื™ื”ืŸ. ื‘ื—ืœืง ื”ืฉื ื™ ืฉืœ ื”ืชืจื’ื™ืœ ื™ืฉ ืœืืกื•ืฃ ืืช ื”ืฉื•ืจื•ืช ืœืงื‘ื•ืฆื•ืช ืฉืœ 3 ื•ืœืกื›ื•ื ืืช ื”ืขืจื›ื™ื ื‘ื›ืœ ืงื‘ื•ืฆื”. ื”ืื™ื•ืจ ื”ื‘ื ืžืžื—ื™ืฉ ืืช ื–ื” ื›ืฉื›ืœ ืื•ืช ืžื™ื™ืฆื’ืช ืงื‘ื•ืฆื”:
199  A      
200  A B    
208  A B C  
210    B C D
200  E   C D
207  E F   D
240  E F G  
269    F G H
260      G H
263        H
ืกื›ื•ืžื™ ื”ืงื‘ื•ืฆื•ืช ื”ื:
A: 607 (N/A - no previous sum)
B: 618 (increased)
C: 618 (no change)
D: 617 (decreased)
E: 647 (increased)
F: 716 (increased)
G: 769 (increased)
H: 792 (increased)
ื•ื‘ื—ืœื•ืงื” ื›ื–ืืช ืื ื™ ืจื•ืื” ืฉ 5 ืงื‘ื•ืฆื•ืช ืžื™ื™ืฆืจื•ืช ืกื›ื•ื ื’ื“ื•ืœ ื™ื•ืชืจ ืžืžื” ืฉื”ื™ื” ื‘ืฉื•ืจื” ื”ืงื•ื“ืžืช. ืขื›ืฉื™ื• ื‘ื•ืื• ื ืœืš ืœืจืื•ืช ืื™ืš ืจืืกื˜ ืžืฆืœื™ื— ืœื—ืฉื‘ ืืช ืื•ืชื ืžืกืคืจื™ื. ## ืคื™ืชืจื•ืŸ ื‘ Rust ื”ืงื•ื“ ื‘ืจืืกื˜ ืžืกืคื™ืง ืืจื•ืš ื‘ืฉื‘ื™ืœ ืœืœืžื“ ืื•ืชื ื• ื“ื‘ืจ ืื• ืฉื ื™ื™ื ืขืœ ื”ืฉืคื” ื•ื”ืกื’ื ื•ืŸ ืฉืœื”, ืื‘ืœ ืขื“ื™ื™ืŸ ืžืกืคื™ืง ืงืฆืจ ื›ื“ื™ ืฉืืคืฉืจ ื™ื”ื™ื” ืœืกื›ื ืื•ืชื• ื‘ืคื•ืกื˜ ืื—ื“. ืื ื™ ืžื“ื‘ื™ืง ื›ืืŸ ืงื•ื“ื ืืช ื”ืชื•ื›ื ื™ืช ื”ืžืœืื” ื•ืื—ืจื™ ื–ื” ืžืžืฉื™ืš ืœืคืจืง ืื•ืชื” ื—ืœืง ื—ืœืง:
use std::env;
use std::fs;

fn part1<'a>(it: impl Iterator<Item=&'a u32>) -> u32 {
    let mut increases = 0;
    let mut previous_line = f64::INFINITY;

    for value in it {
        if f64::from(*value) > previous_line {
            increases += 1;
        }
        previous_line = f64::from(*value);
    }

    return increases;
}

fn main() {
    let args: Vec<String> = env::args().collect();
    let file_path = &args[1];

    let contents = match fs::read_to_string(file_path) {
        Ok(c) => c,
        Err(error) => panic!("Problem opening the file: {} - {:?}", file_path, error),
    };

    let lines = contents.split("\n");

    let values: Vec<u32> = lines.filter_map(|v| v.trim().parse::<u32>().ok()).collect();
    
    let it1 = values.iter();
    let it2 = values.iter().skip(1);
    let it3 = values.iter().skip(2);
    let values_for_part2: Vec<u32> = it1.zip(it2).zip(it3).map(|((a, b), c)| a + b + c).collect();
    
    let sol1 = part1(values.iter());
    let sol2 = part1(values_for_part2.iter());

    dbg!(sol1);
    dbg!(sol2);
}
## ืžื‘ื ื” ื›ืœืœื™ ืฉืœ ื”ืงื•ื‘ืฅ ื”ืงื•ื‘ืฅ ื›ื•ืœืœ ืฉืœื•ืฉื” ื—ืœืงื™ื: 1. ื‘ืชื—ื™ืœืช ื”ืงื•ื‘ืฅ ืคืงื•ื“ื•ืช use ื˜ื•ืขื ื•ืช ืžืฉืชื ื™ื ืžืžืจื—ื‘ื™ ืฉืžื•ืช ืื—ืจื™ื. ืื ื™ ืžืชืืจ ืœืขืฆืžื™ ืฉื’ื ื—ื‘ื™ืœื•ืช ื—ื™ืฆื•ื ื™ื•ืช ื ื˜ืขืŸ ื‘ืขืชื™ื“ ื“ืจืš use, ืื‘ืœ ื‘ืชื•ื›ื ื™ืช ื”ื–ืืช ืœื ื”ืฉืชืžืฉืชื™ ื‘ื—ื‘ื™ืœื•ืช ื—ื™ืฆื•ื ื™ื•ืช. 2. ืคืงื•ื“ื•ืช fn ืžื’ื“ื™ืจื•ืช ืคื•ื ืงืฆื™ื•ืช, ื•ื‘ืงื•ื‘ืฅ ืงื™ื™ืžื•ืช ืฉืชื™ ืคื•ื ืงืฆื™ื•ืช: ื”ืคื•ื ืงืฆื™ื” part1 ื•ื”ืคื•ื ืงืฆื™ื” main. ื”ืฉื main ื”ื•ื ื”ืฉื ืฉืœ ื”ืคื•ื ืงืฆื™ื” ื”ืจืืฉื™ืช ื‘ืชื•ื›ื ื™ืช ืฉืžื•ืคืขืœืช ื›ืฉื”ืชื•ื›ื ื™ืช ืžืชื—ื™ืœื”. ## ื”ืคื•ื ืงืฆื™ื” main

ToCode
1 419
# ืงืฆืช ื›ืžื• ื›ืœื‘ ืจืง ืขื ื›ื ืคื™ื™ื ืœื›ืœื‘ ืื™ืŸ ื›ื ืคื™ื™ื. ืื ื”ื™ื™ื ื• ืฆืจื™ื›ื™ื ื›ืœื‘ ืฉื’ื ื™ื›ื•ืœ ืœืขื•ืฃ ื”ื›ื ืคื™ื™ื ื”ื™ื• ืจืง ื—ืœืง ืงื˜ืŸ ืžื”ื‘ืขื™ื” - ื”ืžื•ื— ื”ื™ื” ืฆืจื™ืš ืœื”ืฉืชื ื•ืช, ืžื‘ื ื” ื”ืฉืจื™ืจื™ื ื”ื™ื” ืฉื•ื ื” ื•ื‘ื˜ื— ืขื•ื“ ืื™ื ืกื•ืฃ ืžืืคื™ื™ื ื™ื ืงื˜ื ื™ื ื‘ื’ื•ืฃ ืฉืœ ื”ื›ืœื‘. ื›ืฉืžื™ืฉื”ื• ืื•ืžืจ ืœื›ื ืฉืคื™ืฆ'ืจ ืžืกื•ื™ื ื”ื•ื ื‘ื“ื™ื•ืง ื›ืžื• X ืจืง ืขื ืชื•ืกืคืช, ืฆืจื™ืš ืœืฉื™ื ืœื‘ ืฉื”ืชื•ืฆืื” ืขืฉื•ื™ื” ืœื”ื™ื•ืช ืžืื•ื“ ืฉื•ื ื” ืžื”ืื™ื ื˜ื•ืื™ืฆื™ื” ืฉืœื›ื ืœื’ื‘ื™ X. ืื ื’ื•ืœืจ1 ืฉื™ื—ืงื” ืขื ื”ืื™ื ื˜ื•ืื™ืฆื™ื” ืฉืœื ื• ืœื’ื‘ื™ ื‘ื™ืฆื•ืขื™ื, ื•ืœื›ืŸ ืจื•ื‘ ืชื•ื›ื ื™ื•ืช ืื ื’ื•ืœืจ1 ืฉื ื›ืชื‘ื• ืขืœ ื™ื“ื™ ืื ืฉื™ื ืฉืœื ืžืกืคื™ืง ื”ื›ื™ืจื• ืื ื’ื•ืœืจ ื”ื›ื™ืœื• ื‘ืขื™ื•ืช ื‘ื™ืฆื•ืขื™ื. ื•ื‘ื“ื•ื’ืžืช ื”ืงื•ื“ ืฉืœ ื”ื™ื•ื ื‘ื™ืœื™ืชื™ ืงืฆืช ื™ื•ืชืจ ืžื“ื™ ื–ืžืŸ ืœื“ื‘ื’ ื‘ื™ื˜ื•ื™ ืขื ืชื ืื™ ื‘ื˜ื™ื™ืคืกืงืจื™ืคื˜, ืžืฉื”ื• ืฉืืคืฉืจ ืœื ืงื•ืช ืื•ืชื• ืœืฆื•ืจื” ื”ื–ืืช:
type Upsert<FullType, T> = T extends { id: number }
    ? Partial<FullType>
    : Omit<FullType, "id">;
ืžืื•ื“ ืจืฆื™ืชื™ ืœืงื—ืช ื˜ื™ืคื•ืก ื›ื–ื”:
type MyStuff = {
    id: number,
    foo: number,
    bar: number,
}
ื•ืœื›ืชื•ื‘ ืคื•ื ืงืฆื™ื” ืฉืชืงื‘ืœ ืžืฉื”ื• ืžื”ื˜ื™ืคื•ืก ืื• ืฉื™ืฉ ืœื• id ื•ืื– ื™ื›ื•ืœื™ื ืœื”ื™ื•ืช ืœื• ืขืจื›ื™ื ืœ foo ื•ืœ bar; ืื• ืฉืื™ืŸ ืœื• id ื•ืื– ื”ื•ื ื—ื™ื™ื‘ ืœืงื‘ืœ ืขืจื›ื™ื ื‘ foo ื•ื‘ bar. ื›ืœื•ืžืจ ืงื•ื“ ื›ื–ื”:
function upsert<T>(thing: Upsert<MyStuff, T>) {}

// I wanted these to compile:
upsert({ id: 10, foo: 5 });
upsert({ foo: 10, bar: 20 });

// And this to not compile:
upsert({ foo: 5 });
ื•ื›ืžื•ื‘ืŸ ืฉื–ื” ืœื ืขื•ื‘ื“. ืžื” ืฉืžืขื ื™ื™ืŸ ื›ืืŸ ื”ื•ื ื”ืกื™ื‘ื” ืฉื–ื” ืœื ืขื‘ื“ ื•ื”ืคื™ืชืจื•ืŸ, ืฉืœืงื— ืœื™ ื™ื•ืชืจ ืžื“ื™ ื–ืžืŸ ืœืจืื•ืช. ื‘ื™ื˜ื•ื™ื™ ืชื ืื™ ื‘ื˜ื™ื™ืคืกืงืจื™ืคื˜ ื”ื ื›ืžื• ืชื ืื™ื ืจื’ื™ืœื™ื ืจืง ืขื ื˜ื•ื•ื™ืกื˜: ื‘ื’ืœืœ ืฉื”ื ื™ื›ื•ืœื™ื ืœืขื‘ื•ื“ ืขืœ ืžืฉืชื ื™ื ื’ื ืจื™ื™ื, ื”ื“ื‘ืจ ืฉื”ื ืžื—ื–ื™ืจื™ื ื™ื›ื•ืœ ืœื”ืฉืคื™ืข ืื—ื•ืจื” ืขืœ ื”ืชื ืื™ ืขืฆืžื•. ื–ื” ืœื ืฉืงื•ื“ื ืžืฉืขืจื›ื™ื ืืช ื”ืชื ืื™ ื•ืื– ื”ื•ืœื›ื™ื ืœื”ื—ื–ื™ืจ ืืช ื”ืขืจืš ื›ืžื• ื‘ื‘ื™ื˜ื•ื™ื™ ืชื ืื™ ืจื’ื™ืœื™ื, ืืœื ืฉื”ื›ืœ ืงื•ืจื” ื™ื—ื“. ื”ืงื•ื“ ื”ื–ื” ื›ื‘ืจ ืขื•ื‘ื“:
type Upsert<FullType, T> = T extends { id: number }
    ? T & Partial<FullType>
    : T & Omit<FullType, "id">;

type MyStuff = {
    id: number,
    foo: number,
    bar: number,
}

function upsert<T>(thing: Upsert<MyStuff, T>) {}

// Compiles
upsert({ id: 10, foo: 5 });
upsert({ foo: 10, bar: 20 });

// Doesn't compile - missing "id" or "bar"
upsert({ foo: 5 });
ื‘ื’ื™ืจืกื” ื”ื–ืืช ื˜ื™ื™ืคืกืงืจื™ืคื˜ ื™ื•ื“ืข ืขื•ื“ ื“ื‘ืจ ืขืœ T, ื•ื–ื” ืžืืคืฉืจ ืœื• ืœื‘ื—ื•ืจ ื˜ื™ืคื•ืก ื™ื•ืชืจ ื˜ื•ื‘ ืœืžืฉืชื ื” ื”ื’ื ืจื™ ื‘ืงืจื™ืื” ืœ upsert - ื‘ืขืฆื ื‘ืงืจื™ืื” ื”ื–ืืช T ืžื›ื™ืœ ืืช ื›ืœ ื”ืฉื“ื•ืช ืฉื—ื•ื–ืจื™ื ืžื”ืชื ืื™, ื•ืœื›ืŸ ื”ื•ื ืžื›ื™ืœ ื’ื ืืช id. ื–ื” ื‘ื ื™ื’ื•ื“ ืœื’ื™ืจืกื” ื”ืจืืฉื•ื ื” ืฉื ืœื ื”ื™ื” ืฉื•ื ืื™ืœื•ืฅ ืขืœ T ื•ืœื›ืŸ ื”ื•ื ื”ื™ื” ื™ื›ื•ืœ ืœื”ื™ื•ืช ื˜ื™ืคื•ืก ืจื™ืง ื•ื”ืชื ืื™ ืชืžื™ื“ ื ื›ื ืก ืœืขื ืฃ ื”ืฉืœื™ืœื™. ืื– ื›ืŸ ื˜ื™ืคื•ืกื™ื ืžื•ืชื ื™ื ื”ื ืงืฆืช ื›ืžื• ื‘ื™ื˜ื•ื™ื™ ืชื ืื™ ืจืง ืขื ื˜ื•ื•ื™ืกื˜, ืื‘ืœ ื”ื˜ื•ื•ื™ืกื˜ ื™ื›ื•ืœ ืœื’ืจื•ื ืœืื™ื ื˜ื•ืื™ืฆื™ื” ืœืขื‘ื•ื“ ื ื’ื“ื ื•.

ToCode
1 419
โ€

ToCode
1 419
ืœื•ื– ื•ื•ื‘ื™ื ืจื™ื ืขื“ ืกื•ืฃ ื”ืฉื ื”:

ToCode
1 419
# ื”ืงืคื™ืฆื” ื‘ืœื™ืžื•ื“ ื—ื•ืžืจ ื—ื“ืฉ, ื‘ื™ืŸ ืื ืžืกืคืจ, ืžื”ืจืฆืื”, ืž Tutorial ืื• ื›ืœ ื“ืจืš ืฉื ื‘ื—ืจ, ื™ืฉ ื ืงื•ื“ื” ืฉื”ืžื™ืœื™ื ืžืชื—ื™ืœื•ืช ืœืื‘ื“ ืžืฉืžืขื•ืช. ื–ื” ืžืจื’ื™ืฉ ื›ืžื•- "ื›ืŸ ืื ื™ ืžื‘ื™ืŸ ืืช ื–ื”" "ื‘ืจื•ืจ" "ืจืขื™ื•ืŸ ื˜ื•ื‘" "ืื ื™ ื™ื›ื•ืœ ืœื›ืชื•ื‘ ืืช ื–ื”" ื•ืื– ืžืฉื•ื ืžืงื•ื ืžื’ื™ืข ืื™ื–ื” "ืจื’ืข, ืžื” ื”ืจื’ืข ื”ื™ื” ืคื”?!". ื–ืืช ื”ืงืคื™ืฆื” ืžืืคืœื™ืงืฆื™ื™ืช Todo MVC ืคืฉื•ื˜ื” ืœืžืขืจื›ืช ืืžื™ืชื™ืช ืขื ืžืฉืชืžืฉื™ื ื•ืžืื•ืช ืืœืคื™ ืฉื•ืจื•ืช ืงื•ื“. ื•ื”ื™ื ืฉื ื›ื™ ืื•ืชื• ื‘ืŸ ืื“ื ืฉื›ืชื‘ ืืช ื”ืžื“ืจื™ืš ื‘ืืžืช ืจื•ืฆื” ืœืขื–ื•ืจ ืœื ื• ืœื”ืชืžื•ื“ื“ ื’ื ืขื ื”ืกื™ื˜ื•ืืฆื™ื•ืช ื”ืžืกื•ื‘ื›ื•ืช ืฉื”ื•ืœื›ื•ืช ืœื”ื’ื™ืข. ื”ื”ืจื’ืฉื” ืฉืœ "ืžื” ื”ืจื’ืข ืงืจื” ืคื”" ืœื ืžื’ื™ืขื” ื‘ื’ืœืœ ืฉื”ืžื™ืœื™ื ืœื ืžืกืคื™ืง ื˜ื•ื‘ื•ืช ืื• ื”ื”ืกื‘ืจ ืœื ืžื“ื•ื™ืง. ื”ื™ื ืžื’ื™ืขื” ื‘ื’ืœืœ ืฉืื™ืŸ ืœื ื• ืžืกืคื™ืง ื ื™ืกื™ื•ืŸ ื‘ืฉื‘ื™ืœ ืœื”ื‘ื™ืŸ ืืช ื”ื‘ืขื™ื” ืฉื”ืžื“ืจื™ืš ืžื“ื‘ืจ ืขืœื™ื”. ื•ื‘ืœื™ ื ื™ืกื™ื•ืŸ ื›ืœ ื”ืกื‘ืจ ื™ื”ื™ื” ืชืœื•ืฉ. ื›ืฉืžื’ื™ืขื™ื ืœื ืงื•ื“ื” ื‘ื” ื”ื”ืกื‘ืจ ืžืชื—ื™ืœ ืœืจื•ืฅ ืžื”ืจ, ื–ื” ื”ืจื‘ื” ืคืขืžื™ื ืœื ื”ืงืฆื‘ ืฉืœ ื”ื”ืกื‘ืจื™ื ืฉื”ืฉืชื ื” ืืœื ื”ืžื•ื›ื ื•ืช ื•ื”ื™ื›ื•ืœืช ืฉืœื ื• ืœืงื‘ืœ ืื•ืชื. ื‘ืžืงื•ื ืœื—ืคืฉ ื”ืกื‘ืจ ื ื•ืกืฃ ื‘ืžืงื•ื ืื—ืจ, ืฉื•ื•ื” ืœืขืฆื•ืจ ื•ืœืฆื‘ื•ืจ ืขื•ื“ ืงืฆืช ื ื™ืกื™ื•ืŸ ื‘ื“ื‘ืจื™ื ืฉื ืจืื™ื ืžื•ื‘ื ื™ื: ืขื•ื“ ืชื•ื›ื ื™ืช, ืขื•ื“ ืคืจื•ื™ืงื˜, ื•ืงืฆืช ื™ื•ืชืจ ื’ื“ื•ืœ, ื™ื›ื•ืœื™ื ืœื”ื‘ื™ื ืืชื›ื ืœืฉืืœื•ืช ืฉื ืคืชืจื•ืช ื‘ื—ืœืง ื”ื‘ื ืฉืœ ื”ื”ืกื‘ืจ.

ToCode
1 419
# ืœืืŸ ืžื–ื™ื–ื™ื ืืช ื”ืžื—ื˜ ืื ื™ ืœื ื™ื•ื“ืข ืขื•ื“ ืžื” ืื ื™ ืจื•ืฆื” ืœื‘ื ื•ืช. ืื ื™ ืฆืจื™ืš ืืช ื”ื’ืžื™ืฉื•ืช ืœืฉื ื•ืช ืชื•ืš ื›ื“ื™ ืชื ื•ืขื”. ืื ื™ ืžื—ืคืฉ ืœื‘ื ื•ืช ืคืจื•ื™ืงื˜ ืืžื™ืŸ. ื›ืœ ื”ืชืจืกืงื•ืช ืชืขืœื” ืœื ื• ื”ืžื•ืŸ ื›ืกืฃ. ืื ื™ ืฆืจื™ื›ื” ืœื‘ื ื•ืช ืคืจื•ื™ืงื˜ ืฉื™ืชืคืงื“ ื˜ื•ื‘ ืขื‘ื•ืจ ืžื™ืœื™ื•ื ื™ ืžืฉืชืชืคื™ื ื•ืฉืชืžื™ื“ ืืคืฉืจ ื™ื”ื™ื” ืœื”ื’ื“ื™ืœ ืื•ืชื•. ื”ืคืจื•ื™ืงื˜ ื™ื—ืœื™ืฃ ืžืขืจื›ืช ืงื™ื™ืžืช ื•ืื ื—ื ื• ื™ื•ื“ืขื™ื ื‘ื“ื™ื•ืง ื›ืžื” ืชื ื•ืขื” ืฆืคื•ื™ื”. ื™ืฉ ืœื ื• ื›ืžื” ืžืื•ืช ืžืชื›ื ืชื™ื ืฉื™ืขื‘ื“ื• ืขืœ ื”ืคืจื•ื™ืงื˜. ืื ื—ื ื• ืžื—ืคืฉื™ื ืชืฉืชื™ืช ืฉื‘ื” ื”ื ื™ื•ื›ืœื• ืœืขื‘ื•ื“ ื˜ื•ื‘ ื™ื—ื“ ื•ืœื”ื™ื•ืช ื™ืขื™ืœื™ื. ืื ื™ ืžื—ืคืฉืช ืœื‘ื ื•ืช ืคืจื•ื™ืงื˜ ืฆื“ ื‘ืชื•ืจ ืžืชื›ื ืชืช ื™ื—ื™ื“ื” ืฉืขื•ื‘ื“ืช ืฉืขื”-ืฉืขืชื™ื™ื ื‘ื™ื•ื. ืื•ืœื™ ื‘ืขืชื™ื“ ืื›ื ื™ืก ืคืจื™ืœืื ืกืจ ืฉื™ืขื–ื•ืจ ืขื ื—ืœืง ืžื”ืคื™ืฆ'ืจื™ื. ืื ื™ ื—ื™ื™ื‘ ืœื”ื’ื™ืข ื›ืžื” ืฉื™ื•ืชืจ ืžื”ืจ ืขื ืžื•ืฆืจ ืœืฉื•ืง. ืœื ืžืฉื ื” ืœื™ ืื ื™ื”ื™ื• ื‘ืื’ื™ื ืื• ืื ื–ื” ืœื ื™ืขื‘ื•ื“ ื”ื›ื™ ื˜ื•ื‘ ื‘ื’ื™ืจืกื” ืจืืฉื•ื ื” - ื”ืžืฉืงื™ืขื™ื ื™ื•ืฉื‘ื™ื ืœื™ ืขืœ ื”ื•ื•ืจื™ื“ ื•ืื ื—ื ื• ื›ื‘ืจ ืื—ืจื™ ืฉื ื™ ืคื™ื‘ื•ื˜ื™ื. ื”ื“ื‘ืจ ื”ื›ื™ ื—ืฉื•ื‘ ืœื™ ื–ื” ืฉื™ื”ื™ื” ืงืœ ืœื’ื™ื™ืก ืื ืฉื™ื. ื›ืจื’ืข ืื ื—ื ื• ืขื“ื™ื™ืŸ ืฆื•ื•ืช ืงื˜ืŸ ืื‘ืœ ืžื”ืจ ืžืื•ื“ ืื ื™ ื”ื•ืœื›ืช ืœืงื‘ืœ ื”ืฉืงืขื” ืจืฆื™ื ื™ืช ื•ืฆืจื™ื›ื™ื ืœื”ื™ื•ืช ืžืกื•ื’ืœื™ื ืœื”ื›ื ื™ืก ืžืชื›ื ืชื™ื ื—ื“ืฉื™ื ืœืขื ื™ื™ื ื™ื ื‘ืงืœื•ืช. ืื ื—ื ื• ื‘ื•ื ื™ื ืžื—ื“ืฉ ืืช ื” Front End ื›ืœ ืฉื ืชื™ื™ื - ื›ืœ ื”ืฉื›ืœ ืฉืœ ื”ื›ืœื™ ื”ื•ื ื‘ืฆื“ ื”ืฉืจืช. --- ืื ื™ ืžืงื•ื•ื” ืฉืฉืžืชื ืœื‘ ืื™ืš ื›ืœ ืกื™ืคื•ืจ ืžื’ื™ืข ืขื ืื™ืœื•ืฆื™ื ืžืฉืœื•. ื›ืœ ื”ืชืœื‘ื˜ื•ืช ื˜ื›ื ื•ืœื•ื’ื™ืช ืฆืจื™ื›ื” ืœื”ืชื—ื™ืœ ืžืจืฉื™ืžืช ืื™ืœื•ืฆื™ื, ื•ื”ืจื‘ื” ืคืขืžื™ื ื›ืฉื™ืฉ ืœื ื• ืืช ื”ืื™ืœื•ืฆื™ื ื‘ืจื•ืจื™ื ืžื•ืœ ื”ืขื™ื ื™ื™ื ืื ื—ื ื• ืžื’ืœื™ื ืฉื”ื‘ื—ื™ืจื” ื”ื˜ื›ื ื•ืœื•ื’ื™ืช ื”ื™ื Non Issue.

ToCode
1 419
# ื›ืฉื”ื›ืœื™ ืœื ืžืกืคืง ืืช ื”ืชืžื•ืจื” ืื ืืชื ืขื•ื‘ื“ื™ื ืขืœ ืคืจื•ื™ืงื˜ ื˜ื™ื™ืคืกืงืจื™ืคื˜ ื•ื›ื•ืชื‘ื™ื ื”ื’ื“ืจื•ืช ื˜ื™ืคื•ืกื™ื ืจืง ืื™ืคื” ืฉืงืœ, ื™ืฉ ืกื™ื›ื•ื™ ื˜ื•ื‘ ืฉืื™ืŸ ืœื›ื ื‘ืืžืช Type Safety ื‘ืคืจื•ื™ืงื˜ - ืคืฉื•ื˜ ื›ื™ ื”ืจื‘ื” ืคื•ื ืงืฆื™ื•ืช ืžืฉืชืžืฉื™ื ื‘ื˜ื™ืคื•ืกื™ื ื’ื ืจื™ื™ื ืžื“ื™. ืื ืืชื ื›ื•ืชื‘ื™ื ื‘ื“ื™ืงื•ืช ืจืง ืื™ืคื” ืฉืงืœ, ื™ืฉ ืกื™ื›ื•ื™ ื˜ื•ื‘ ืฉื”ื‘ื“ื™ืงื•ืช ืฉืœื›ื ืœื ืžืฆื™ืขื•ืช ื›ื™ืกื•ื™ ืงื•ื“ ืืžื™ืชื™. ืื ืืชื ื›ื•ืชื‘ื™ื ืชื™ืขื•ื“ ืจืง ื‘ื›ืชื™ื‘ืช ืงื•ื“ ื—ื“ืฉ, ื•ืœื ื˜ื•ืจื—ื™ื ืœืขื“ื›ืŸ ืื•ืชื• ื›ืฉืืชื ืžืขื“ื›ื ื™ื ืงื•ื“ (ื›ื™ ืื™ืŸ ื–ืžืŸ ืœื“ื‘ืจื™ื ื›ืืœื” ื™ืฉ ื‘ืื’ ืงืจื™ื˜ื™ ื‘ืคืจื•ื“ืงืฉืŸ), ื™ืฉ ืกื™ื›ื•ื™ ื˜ื•ื‘ ืฉื”ืชื™ืขื•ื“ ืฉืœื›ื ืœื ืžื‘ื™ื ืืช ื”ืขืจืš ืฉืชื™ืขื•ื“ ื™ื›ื•ืœ ืœื”ื‘ื™ื. ื™ืฉ ืœื ืžืขื˜ ืžืฆื‘ื™ื ื‘ื”ื 50% ื”ืฉืงืขื” (ื•ืืคื™ืœื• 80% ื”ืฉืงืขื”) ืœื ืชื™ืชืŸ 50% ืชืžื•ืจื”. ืื ื”ื—ืœื˜ืชื ืœื‘ื—ื•ืจ ื›ืœื™ ืฉื“ื•ืจืฉ ืžืกื™ืจื•ืช ืžื•ื—ืœื˜ืช, ืชื•ื•ื“ืื• ืงื•ื“ื ืฉืืชื ืžื•ื›ื ื™ื ืœืฉืœื ืืช ื”ืžื—ื™ืจ ื’ื ื›ืฉืงืฉื”.

ToCode
1 419
# ื”ื‘ืขื™ื” ืขื ื˜ืจื™ืงื™ื ื–ื•ืœื™ื ื”ื‘ืขื™ื” ืขื ื˜ืจื™ืงื™ื ื–ื•ืœื™ื ื”ื™ื ืœื ืฉื”ื ืœื ืขื•ื‘ื“ื™ื - ืื ืืช ืžื ืกื” ืœืขื•ื“ื“ ืืช ื”ืฆื•ื•ืช ืœืขื‘ื•ื“ ืงืฉื” ืขื ื“ื“ืœื™ื™ืŸ ืžื•ืžืฆื, ื•ืืช ืžืฆืœื™ื—ื” ืœืฉืžื•ืจ ืขืœ ืคืจืฆื•ืฃ ืจืฆื™ื ื™, ื™ืฉ ืกื™ื›ื•ื™ ื˜ื•ื‘ ืฉืื ืฉื™ื ื™ื™ืฉืืจื• ืฉืขื•ืช ื ื•ืกืคื•ืช ื•ื™ืขืฉื• ืžืืžืฅ ื›ื“ื™ ืœื”ื’ื™ืข ืœื“ื“ ืœื™ื™ืŸ ื”ื–ื” ืขื ืžื•ืฆืจ ืฉืขื•ื‘ื“; ืื ืืชื” ืฆืจื™ืš ืœื”ื’ื™ืข ืขื ืžื•ืฆืจ ืœืœืงื•ื— ื•ืืชื” ื ื•ืชืŸ ืžื•ืฆืจ ืฉื ืจืื” ืขื•ื‘ื“ ืื‘ืœ ื‘ืขืฆื ืขื•ืžื“ ืขืœ ื›ืจืขื™ ืชืจื ื’ื•ืœืช, ื”ืœืงื•ื— ืื•ืœื™ ืœื ื™ืฉื™ื ืœื‘ ืœื‘ืขื™ื•ืช ื‘ืžื‘ื˜ ืจืืฉื•ืŸ; ืื ืืช ืžืœืžื“ืช ืงื•ืจืก ื•ืžืจืื” ืœืื ืฉื™ื ืจืง ื“ื‘ืจื™ื ืฉืงืœื™ื ืœื”ื ื”ื ื™ืฆืื• ืžื”ืงื•ืจืก ื‘ื”ืจื’ืฉื” ืฉื”ื ื™ื•ื“ืขื™ื ื”ื›ืœ ื•ื”ืงื•ืจืก ื”ืฆืœื™ื—. ื”ื‘ืขื™ื” ืขื ื˜ืจื™ืงื™ื ื–ื•ืœื™ื ื”ื™ื ื‘ื“ื™ื•ืง ืฉื”ื ืขื•ื‘ื“ื™ื. ืื‘ืœ ืจืง ืคืขื ืื• ืคืขืžื™ื™ื. ื›ื™ ืื—ืจื™ ื“ื“-ืœื™ื™ืŸ ืคื™ืงื˜ื™ื‘ื™ ืื• ืฉื ื™ื™ื ืื ืฉื™ื ื›ื‘ืจ ืœื ื™ืืžื™ื ื• ืœืš, ื•ื™ื”ื™ื” ืงืฉื” ืžืื•ื“ ืœืขื•ืจืจ ื‘ืฆื•ื•ืช ืžื•ื˜ื™ื‘ืฆื™ื” ื’ื ื‘ื“ื‘ืจื™ื ื—ืฉื•ื‘ื™ื. ื™ื•ืชืจ ืžื–ื”, ื›ืฉืื ืฉื™ื ืžืชืจื’ืœื™ื ืœืชืจื‘ื•ืช ืฉืœ ืฉืงืจ ื›ื•ืœื ื ืคื’ืขื™ื. ื›ื™ ืื—ืจื™ ืžื•ืฆืจ ืฉื‘ื•ืจ ืื—ื“ ื”ืœืงื•ื— ื”ื•ืœืš ืœื”ื™ื•ืช ื”ืจื‘ื” ื™ื•ืชืจ ื—ืฉื“ืŸ ืœืงืจืืช ื”ืžื•ืฆืจ ื”ื‘ื, ืื ื‘ื›ืœืœ ืชืงื‘ืœ ื”ื–ื“ืžื ื•ืช ืฉื ื™ื”. ื•ื’ื ืื ืชืžืฉื™ืš ืœืœืงื•ื— ื—ื“ืฉ ืœืื•ืจืš ื–ืžืŸ ืื ืฉื™ื ื™ืชื—ื™ืœื• ืœื“ื‘ืจ ื•ื™ื”ื™ื” ืœืš ืงืฉื” ืœื’ื“ื•ืœ. ื•ืื—ืจื™ ืฉืื ืฉื™ื ื™ื‘ื™ื ื• ืฉืคืฉื•ื˜ ื“ื™ืœื’ืช ืขืœ ื›ืœ ื”ื—ืœืงื™ื ื”ืงืฉื™ื ื‘ืงื•ืจืก, ื”ื ืขืœื•ืœื™ื ืœื—ืฉื•ื‘ ืคืขืžื™ื™ื ืœืคื ื™ ืฉื™ืงื—ื• ืงื•ืจืก ื ื•ืกืฃ - ื›ื™ ืžืžื™ืœื ืœืงื•ืจืกื™ื ืื™ืŸ ืขืจืš ื•ืื—ืจื™ื”ื ืฆืจื™ืš ืœืœืžื•ื“ ื”ื›ืœ ืœื‘ื“. ืœืคืขืžื™ื ืฉื•ื•ื” ืœื ืœืกืคืจ ืืช ื”ื›ืœ ืžื™ื“ ื›ื“ื™ ืœื™ืฆื•ืจ ืžืชื— ื•ืœืขื–ื•ืจ ืœืื ืฉื™ื ืœืขื‘ื•ืจ ืื™ื–ืฉื”ื• ืžื—ืกื•ื ืคืกื™ื›ื•ืœื•ื’ื™. ืื‘ืœ ืจื•ื‘ ื”ื–ืžืŸ ืคืชื™ื—ื•ืช ืžืฉืชืœืžืช ื”ืจื‘ื” ื™ื•ืชืจ ื›ื™ ื”ื™ื ื™ื•ืฆืจืช ืชืจื‘ื•ืช ื˜ื•ื‘ื” ื™ื•ืชืจ ืœื˜ื•ื•ื— ื”ืจื—ื•ืง.

ToCode
1 419
EventPayload extends Extract<Event, { type: EventType }>["payload"]
>(
  eventType: EventType,
  ...eventPayload: EventPayload extends undefined
      ? [undefined?] 
      : [EventPayload]
) {}

handle("login", { username: "ynon" });
handle("logout");
handle("sendMessage", { to: "ynon", text: "hi ;)"});
ื”ืงื•ื“ ื”ื–ื” ื›ื‘ืจ ืขื•ื‘ื“ ืžืžืฉ ืื—ืœื”. ืื™ืจื•ืขื™ื ืฉืžื•ื’ื“ืจื™ื ืขื payload ื“ื•ืจืฉื™ื ืฉื ืขื‘ื™ืจ ืืช ื” payload ื‘ืคืจืžื˜ืจ ื”ืฉื ื™ ื•ื‘ื•ื“ืงื™ื ืฉืžื” ืฉื”ืขื‘ืจื ื• ืชื•ืื ืœื”ื’ื“ืจื” ื‘ื˜ื™ืคื•ืก ื”ืื™ืจื•ืข, ืื™ืจื•ืขื™ื ืฉืžื•ื’ื“ืจื™ื ื‘ืœื™ payload ืืคืฉืจ ืœื”ืคืขื™ืœ ืจืง ืขื ืคืจืžื˜ืจ ืื—ื“.