LINUX.ORG.RU

Пытаюсь тут обмазаться ржавчиной.

 ,


0

4

Например вот такой кусок кода на Java:

public static void collect( Map<String, Boolean> map, List<String> list){
    map.entrySet().stream().filter( Map.Entry::getValue ).map( Map.Entry::getKey ).collect( Collectors.toCollection( () -> list ) );
}


и пытаюсь такое же применить в Rust
fn test_collect<'a>( map: &'a HashMap<String,bool>, vec: &mut Vec<&'a String> ){
	let mut cc:Vec<&String> = map.iter().filter(| &(_, v) | *v ).map(| ( k, _ ) | k ).collect();
	vec.append(&mut cc);
}


Что-то не нахожу как сделать без промежуточного вектора.

cast tailgunner, DarkEld3r

★★★★★

Последнее исправление: WatchCat (всего исправлений: 1)
Ответ на: комментарий от WatchCat

Я не понимаю, а чем вышеприведённый код сложен в восприятии?

Токенизация, плохо совместимая с особенностями человеческого восприятия.

Кстати, а что означает «токенизация чтения» и какое отношение имеет это к человеческому восприятию текста?

Ну, это, как бы основы психофизиологии распознавания. Чтобы быстро распознавать последовательность символов она должна делиться на визуально хорошо отделимые компоненты - чанки или токены.

Или кто-то читает программы посимвольно, как это делает компилятор?

Вот избытки однотипных закорючек и заставляют читать программы посимвольно. Конечно, мозг штука мощная и способен научиться читать крупными токенами хоть brainfuck, но это — лишнее и часто значительное время на освоение и всё равно снижение скорости восприятия.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

А подсвеченный вариант как тебе?

http://s31.postimg.org/ehnsvt6kr/Screenshot_from_2016_04_23_15_19_22.png

(Хотел сделать ссылкой на pastebin, но у того тоже сломался парсер на ')

makoven ★★★★★
()
Последнее исправление: makoven (всего исправлений: 1)
Ответ на: комментарий от makoven

Подсвеченный всегда лучше, т.к. появляется дополнительный информационный канал. Но в случае этого кода — всё равно не спасает :) Всё равно это код, который придётся взглядом парсить сугубо последовательно, что сильно снижает скорость и удобство восприятия.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Вы бы хоть пример какой привели. Вот этот код читаемый?

if [ ! -z "`ps -C \`basename $0\` --no-headers -o "pid,ppid,sid,comm"|grep -v "$$ "|grep -v "<defunct>"`" ]; then

red75prim ★★★
()
Ответ на: комментарий от KRoN73

Ну не знаю, я четко вижу во второй строке map->iter->filter->map и вполне очевидные лямбды меж ними, в которые можно не вникать.

А вот в первой строке vim-подсветчик налажал (или я чего-то не понимаю): Vec подсветил, а HashMap нет. В итоге визуально получилось 3 аргумента вместо двух )

makoven ★★★★★
()
Ответ на: комментарий от red75prim

Вот этот код читаемый?

Плохо читаемый. Но, на мой взгляд, чуть лучше, чем топикстартовый :)

Тут токены отделяются друг от друга более чётко, но картину портит экранированная вложенность кавычек. Вариант с $(...) будет более читаемым.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

ыфкуил

О, и гуманитариев есть свой хаскель )

makoven ★★★★★
()
Ответ на: комментарий от KRoN73

Ну, это, как бы основы психофизиологии распознавания.

Ох лол.
Ладно, не буду дальше расспрашивать.
Иначе досмеюсь до икоты.

WatchCat ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.