Прочитайте файл CSV, кодирующий ошибку

Конкретный вопрос, который у меня возникает, заключается в том, как создать макрос, который принимает в качестве аргумента функцию с более чем одним параметром, где первый параметр определенного типа предоставляет этот аргумент для первого функция.

Макросы (даже процедурные макросы) работают с синтаксическими деревьями, поэтому они не могут изменять свое поведение в зависимости от семантики, включая типы и функции функций. Это означает, что для каждого возможного числа аргументов вам потребуется отдельный макрос. Например:

macro_rules! curry1 {
    ($func: ident, $($arg: expr),*) => {
        |a| $func($($arg),*, a)
    }
}

macro_rules! curry2 {
    ($func: ident, $($arg: expr),*) => {
        |a, b| $func($($arg),*, a, b)
    }
}

macro_rules! curry3 {
    ($func: ident, $($arg: expr),*) => {
        |a, b, c| $func($($arg),*, a, b, c)
    }
}

Что будет использоваться следующим образом:

fn f(a: i32, b: i32, c: i32) -> i32 {
    a + b + c
}

fn main() {
    // requires 2 extra args
    let f_2 = curry2!(f, 2);
    // requires 1 extra arg
    let f_2_1 = curry1!(f, 2, 1);

    println!("{}", f(2, 1, 3)); // 6
    println!("{}", f_2(1, 3));  // 6
    println!("{}", f_2_1(3));   // 6
}
5
задан Germstorm 12 January 2009 в 07:37
поделиться

2 ответа

Попытайтесь использовать CharacterSet=UNICODE в Вашем файле schema.ini. Хотя это не документируется на MSDN, он работает согласно этому потоку над Microsoft Forums.

8
ответ дан 13 December 2019 в 19:37
поделиться

Ну, очень хорошая и хорошо используемая потоковая передача читатель CSV находится на CodeProject; это - первая вещь, которую я попробовал бы..., но она кажется, что Ваше кодирование может быть borked, который не мог бы сделать ее простой..., конечно, это мог просто быть odbc, который повреждается, в этом случае вышеупомянутое могло бы хорошо работать.

Для простого CSV Вы могли попытаться анализировать его сами (string.Split и т.д.), но существует достаточно пограничных случаев, которые предварительно прокрученный синтаксический анализатор стоит использовать.

3
ответ дан 13 December 2019 в 19:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: