Хорошая практика держать файл или канал в классе - PullRequest
0 голосов
/ 27 февраля 2019

В следующем коде я пытаюсь создать класс, который может записывать что-либо в файл журнала при запросе через метод.Здесь мне интересно, если это идиоматический способ для этой цели, или, возможно, есть более рекомендуемый способ, например, держать отдельное поле типа file (по какой-то причине)?Другими словами, действительно ли это не проблема, даже если я держу только channel тип?

class Myclass {
    var logfile: channel;

    proc init() {
        writeln( "creating log.out" );
        logfile = openwriter( "log.out" );
    }
    proc log( x ) {
        logfile.writeln( x );
    }
}

proc main() {
    var a = new borrowed Myclass();
    a.log( 10 );
    a.log( "orange" );
}

1 Ответ

0 голосов
/ 28 февраля 2019

Я считаю, что то, что вы делаете здесь, разумно.Различие между файлами и каналами в Chapel в основном делается для поддержки темы параллельных вычислений в языке, чтобы обеспечить одновременный доступ нескольких задач к одному логическому файлу по разным каналам (по сути, к просмотрам файла).В случае, подобном вашему, существует файл, лежащий в основе созданного вами канала, но нет необходимости явно сохранять его, если вам больше не нужно с ним взаимодействовать.

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

...