Есть ли у Factor эквивалент языка Python, если __name __ == "__ main__": main ()? - PullRequest
1 голос
/ 18 августа 2011

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

#! /usr/bin/env factor -script

USE: io
IN: hello

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

MAIN: hello

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

Кто-нибудь знает, есть ли у Factor синтаксис, такой как Python, так что hello фактически вызывается на ./hello.py?

def hello():
   print "Hello World!"

if __name__=="__main__":
   main()

1 Ответ

1 голос
/ 12 октября 2011

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

~ / .factor-rc:

! 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: Значениеlife is 42 $ ./test.factor Тест: смысл жизни 42

Как опубликовано RosettaCode .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...