Есть ли у Factor эквивалент языка Python, если __name__=="__main__": main()?

Фактор имеет основной метод, как и любой язык на основе Си:

#! /usr/bin/env factor -script

USE: io
IN: hello

: hello ( -- ) "Hello World!" print ;

MAIN: hello

Но Фактор не выполняет основную функцию автоматически; если вы бежите ./hello.factor в терминале ничего не происходит, потому что main не называется.

Кто-нибудь знает, есть ли фактор в синтаксисе, как Python, так что hello на самом деле призван ./hello.py?

def hello():
   print "Hello World!"

if __name__=="__main__":
   main()

1 ответ

Решение

Фактор теперь выполнит main функция, если она указана. Вам все равно придется редактировать ~/.factor-rc добавить INCLUDING/IN макросы, так что Factor будет искать код в текущем каталоге.

~ /.Factor-гс:

! Andrew Pennebaker
! INCLUDING macro that imports source code files in the current directory

USING: kernel vocabs.loader parser sequences lexer vocabs.parser ;
IN: syntax

: include-vocab ( vocab -- ) dup ".factor" append parse-file append use-vocab ;

SYNTAX: INCLUDING: ";" [ include-vocab ] each-token ;

scriptedmain.factor:

#! /usr/bin/env factor

USING: io math.parser ;
IN: scriptedmain

: meaning-of-life ( -- n ) 42 ;

: main ( -- ) meaning-of-life "Main: The meaning of life is " write number>string print ;

MAIN: main

test.factor:

#! /usr/bin/env factor

INCLUDING: scriptedmain ;
USING: io math.parser ;
IN: test

: main ( -- ) meaning-of-life "Test: The meaning of life is " write number>string print ;

MAIN: main

Пример:

$./scriptedmain.factor Main: смысл жизни - 42 $ ./test.factor Тест: смысл жизни - 42

Как размещено на RosettaCode.

Другие вопросы по тегам