Есть ли у 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.