Minecraft ComputerCraft Turtles изисква изявление, което не работи

Напоследък пиша много програми за костенурки и установявам, че постоянно пренаписвам едни и същи функции. Бих искал да поставя всички тези функции в техния собствен файл и след това да ги включа в горната част на другите си програми за костенурки. Преглеждайки документацията на lua, изглежда, че трябва да използвам require. Въпреки това изглежда не мога да го накарам да работи. Ето един основен пример, който опитах:

програма1:

 print("Hello World")

програма2

require program1 

Това доведе до следната грешка:

bios:366: [string "program2"]:1: '=' expected

След това се опитах да задам пътя на пакета към текущата директория, преди да направя израза за изискване по следния начин:

package.path = package.path .. ';./?.lua;'

Това също не проработи. Изглежда, че костенурките не използват същия синтаксис като lua за израза за изискване (ако изобщо го поддържат)

Има ли начин да се направи нещо подобно с костенурките? Ако използва "require", тогава какъв е правилният синтаксис? (Нямам достъп до файловете на сървъра, на който играя, така че простото им редактиране не е опция)


person metamilo    schedule 05.03.2015    source източник


Отговори (2)


require е функция; трябва да го извикате, като използвате синтаксиса на функцията:

require("foo")
-- or
require "foo"

... но не изглежда, че ComputerCraft поддържа функцията require. Опитайте os.loadAPI("path/to/file").

(Уважаеми разработчици, които искат да поставят Lua в пясъчна среда: require поддържа конфигуриране на начина, по който зарежда модули; моля, използвайте това вместо да замените require!)

person Colonel Thirty Two    schedule 05.03.2015

Трябва да поставите program1 в кавички:

require "program1"
person Paul Kulchenko    schedule 05.03.2015
comment
Благодаря за бързия отговор, но опитах това и даде тази грешка: (program1:1: опит за извикване на нула), което предполагам, че просто означава, че изискването е неуспешно. - person metamilo; 05.03.2015
comment
Това означава, че require не е наличен в средата ComputerCraft. Вижте отговора на @ColonelThirtyTwo за алтернативата. - person Paul Kulchenko; 05.03.2015