Редактировать - Добавление информации о stc
и stx
Боюсь, вы не можете использовать код GNU Smalltalk непосредственно в Smalltalk / X (ветка -jv). Также было бы неплохо увидеть, какова ваша конечная цель в серии вопросов Smalltalk.
Для вас важно понимать, что Smalltalk был разработан для работы в IDE, если вы хотите создать приложение, вам следует использовать предоставленную IDE. Если вы хотите создать пример приложения, для Smalltalk / X есть даже руководство . Это, конечно, не означает, что вы не можете запустить скрипт из командной строки (Smalltalk / X обладает мощной оболочкой).
При этом существует пакет Smalltalk / X, подсвечивающий файл пакета для Sublime Text 3 , сделанный мной и размещенный в BitBucket. Я создал его в основном для Smalltalk и его встроенной подсветки языка Си.
Сначала вы, вероятно, используете stx
исполняемый файл, а не stc
. stc
является сокращением для smalltalk-to-C
компилятора . stc
создает C-код , который затем может быть скомпилирован C-компилятором в объектный файл , который затем может быть связан с конечный исполняемый файл (вместе с другими классами smalltalk и средой выполнения).
smalltalk
или stx
- это средство запуска, которое может выполнять сценарии Smalltalk или открывать полноценную среду IDE. Если вы знакомы с Java, подумайте о stc
с javac
и smalltalk
или stx
с java
.
Вы можете использовать предоставленный модуль запуска под названием smalltalk
(сценарий bash для * nix и batch / powershell для Windows), который использует stx.com
в конце, но предоставляет некоторые дополнительные функции.
Используйте smalltalk --help
см. Параметры командной строки.
Сначала я начну с простого однострочного текста, который вы можете использовать:
stx.com -I --quick --eval "Transcript showCR: 'A message on stdout on Transcript'
A message on stdout on Transcript
на окнах вы, если вы используете smalltalk
вы получите больше информации:
smalltalk -I --quick --eval "Transcript showCR: 'A message on stdout on Transcript'
"[INFO] PowerShell detected: ->TRUE<-.
"[INFO] The latest latest_powershell_version found: 5.1.16299.1004."
"[INFO] With the runtime being: v4.0.30319."
VERBOSE: [INFO] Manual switch detected - configuration is ignored
VERBOSE: [INFO] Executing asynchronously command: C:\prg_sdk\stx8-jv_swing\build\stx\projects\smalltalk\stx.com -I
--quick --eval "Transcript showCR: 'A message on stdout on Transcript'" | Out-null
VERBOSE: A message on stdout on Transcript
VERBOSE:
VERBOSE: [INFO] Exiting from PowerShell with code 0
VERBOSE: [INFO] End. Exiting correctly.
Теперь давайте перейдем к вашему вопросу сценариев
В начале лучший способ - создать класс в IDE и создать файл из него. После этого вы увидите правильную структуру файла .st
.
Я создал для вас простой файл script.st
(это то же самое, что вы получите в файле Out of IDE):
"{ NameSpace: Smalltalk }"
Object subclass:#MyClass
instanceVariableNames:'mainValue'
classVariableNames:''
poolDictionaries:''
category:''
!
!MyClass methodsFor:'accessing'!
mainValue
^ mainValue
!
mainValue: newValue
mainValue := newValue
! !
!MyClass methodsFor:'initialization & release'!
initialize
super initialize.
mainValue := 555.
! !
gc := MyClass new.
gc initialize.
Transcript showCR: gc mainValue.
Как вы запускаете такой скрипт?
smalltalk --execute script.st
Вывод будет: 555
Если вы хотите писать сценарии без «объектов» (ну, в Smalltalk все является объектом, но вы здесь не определяете класс), вы можете сделать простой transcript.st
:
| mainValue |
mainValue := 555.
Transcript showCR: mainValue.
снова выполните его как: smalltalk --execute transcript.st
, чтобы получить идентичный результат.