Pull to refresh
1
0
Дмитрий @dataman

Программист

Send message
Да ну что вы! Прекрасная статья, спасибо!
Я просто брюзжу.
Это была ирония.
Не пишите так, пожалуйста.
конгломерат авторов

Впервые встречаю такое сочетание.
Что это, есть ссылка?
скурпулезно

Обучение было неглубоким?
Есть ли подобная GUI утилита под Linux?

Из того, что пробовал и пользуюсь (по убыванию удобства):
Sublime Merge
GitQlient
qgit
CuteGit
У таких ребят две отличительных черты: 1) они упрямы и уверены в своём превосходстве;

Вся статья пропитана этим же.
А так for выглядит в
Zig
test "for basics" {
    const items = [_]i32 { 4, 5, 3, 4, 0 };
    var sum: i32 = 0;

    // For loops iterate over slices and arrays.
    for (items) |value| {
        if (value == 0) {
            continue;
        }
        sum += value;
    }
    assert(sum == 16);

    for (items[0..1]) |value| {
        sum += value;
    }
    assert(sum == 20);

    var sum2: i32 = 0;
    for (items) |value, i| {
        assert(@TypeOf(i) == usize);
        sum2 += @intCast(i32, i);
    }
    assert(sum2 == 10);
}

test "for reference" {
    var items = [_]i32 { 3, 4, 2 };

    for (items) |*value| {
        value.* += 1;
    }

    assert(items[0] == 4);
    assert(items[1] == 5);
    assert(items[2] == 3);
}

test "for else" {
    var items = [_]?i32 { 3, 4, null, 5 };

    var sum: i32 = 0;
    const result = for (items) |value| {
        if (value != null) {
            sum += value.?;
        }
    } else blk: {
        assert(sum == 12);
        break :blk sum;
    };
    assert(result == 12);
}


Замечу, что в Zig нет итераторов, но можно определить внутреннюю структуру (обычно Iterator) и c функциями next, prev и т.д. и использовать while:
var it = somevar.iterator();
while (it.next()) |value| {
...
}

В предстоящем релизе значительно улучшены compiletime-возможности (помимо прочего), так что у Zig большое будущее. :)
P.S. Используется подсветка кода С++.
Кстати, в c++20 появился std::ranges, что ещё больше упрощает написание такой функции, но я пока не готов переходить на этот стандарт.


Ну а пока есть FunctionalPlus (C++14), range-v3 (C++14/17/20) и NanoRange (C++17).
Что касается самой SQLite, то порой в ней самой не хватает дифа

Уже есть sqldiff и расширение Session, правда, с рядом ограничений.

возможности загрузки данных в текстовом формате

Есть CSV Virtual Table.
Дополню, что автор — наш. :-)
Пообщаться можно на Ru.Board в этом топике.
Я некоторое время экспериментировал с D, сделал пару PR, но затем эти nogc, pure, system, etc. стали просто бесить.

пару примеров того что в Nim реализовано лучше чем в D?

1. Макросы. Вы можете создать свой DSL средствами самого языка. Так, например, в Nim реализованы юниттесты. Или макрос scanf, который на этапе компиляции преобразуется в вызовы соответсвующих функций и поэтому парсинг работает очень быстро.
2. Конвертеры
3. Концепты

Для разработчиков игр/графики, думаю, будет интересно взглянуть на opengl-sandbox. Демо.
прекрасные шеблоны, много фишек самого языка(такие как генерация кода в процессе компиляции; constexpr и рядом не стоял)

Nim имеет столько фишек, что D и рядом не стоял. :)

Information

Rating
Does not participate
Location
Ломе, Того, Того
Date of birth
Registered
Activity