Difference between revisions of "love.filesystem.load (Русский)"

(Created page with 'Загружает файл (но не запускает его). == Функция == === Вид === <source lang="lua"> chunk = love.filesystem.load( name ) </source> === Ар…')
 
m
 
Line 1: Line 1:
 +
{{newin|[[0.5.0]]|050|type=function}}
 
Загружает файл (но не запускает его).
 
Загружает файл (но не запускает его).
 
== Функция ==
 
== Функция ==
Line 9: Line 10:
 
=== Возвращает ===
 
=== Возвращает ===
 
{{param (Русский)|function|chunk|Загруженный кусок.}}
 
{{param (Русский)|function|chunk|Загруженный кусок.}}
 +
{{param|string|errormsg (nil)|Сообщение об ошибке, если файл не может быть открыт.}}
 
== Пример ==
 
== Пример ==
Важно отметить, что love.filesystem.load '''не''' вызывает код, она просто создает функцию ('chunk'), которая будет содержать содержимое файла внутри себя. Для того, чтобы выполнить кусок, вы должны расположить () за ним.
+
Важно отметить, что love.filesystem.load '''не''' вызывает код, она просто создает функцию, в которой будет находиться содержимое файла. Для того, чтобы выполнить код чанка достаточно просто вызвать полученную функцию: '''chunk()'''.
  
 
Кроме того, стоит отметить, что загруженные файлы могут возвращать значения. Например этот файл:
 
Кроме того, стоит отметить, что загруженные файлы могут возвращать значения. Например этот файл:
Line 25: Line 27:
  
  
Появится экран с ошибкой, если в выполняемом файле есть ошибка в коде. Чтобы этого избежать, используййте функцию '''pcall''':
+
Появится экран с ошибкой, если в выполняемом файле есть ошибка в коде. Чтобы этого избежать, используйте функцию [https://lua.org.ru/contents_ru.html#pdf-pcall '''pcall''']:
  
 
<source lang="lua">
 
<source lang="lua">
chunk = love.filesystem.load( name ) -- загружает кусок
+
local ok, chunk, result
local ok, errMsg = pcall(chunk) -- выполняет кусок в безопасном режиме
+
ok, chunk = pcall( love.filesystem.load, name ) -- безопасно загружаем файл
 +
if not ok then
 +
  print('The following error happened: ' .. tostring(chunk))
 +
else
 +
  ok, result = pcall(chunk) -- безопасно выполняем загруженный код
  
if not ok then -- если произошла ошибка
+
  if not ok then -- если произошла какая-то ошибка, то выводим её
  print('The following error happened: ' .. tostring(errMsg))
+
    print('The following error happened: ' .. tostring(result))
else
+
  else
  print('The result of loading is: ' .. tostring(errMsg))
+
    print('The result of loading is: ' .. tostring(result))
 +
  end
 
end
 
end
 
</source>
 
</source>

Latest revision as of 01:33, 1 December 2021

Available since LÖVE 0.5.0
This function is not supported in earlier versions.

Загружает файл (но не запускает его).

Функция

Вид

chunk = love.filesystem.load( name )

Аргументы

string name
Имя (и путь) файла.

Возвращает

function chunk
Загруженный кусок.
string errormsg (nil)
Сообщение об ошибке, если файл не может быть открыт.

Пример

Важно отметить, что love.filesystem.load не вызывает код, она просто создает функцию, в которой будет находиться содержимое файла. Для того, чтобы выполнить код чанка достаточно просто вызвать полученную функцию: chunk().

Кроме того, стоит отметить, что загруженные файлы могут возвращать значения. Например этот файл:

return 1+1

Вернет 2, когда будет вызван таким образом:

chunk = love.filesystem.load( name ) -- загружает кусок
local result = chunk() -- выполняет кусок
print('result: ' .. tostring(result)) -- выводит 'result: 2'


Появится экран с ошибкой, если в выполняемом файле есть ошибка в коде. Чтобы этого избежать, используйте функцию pcall:

local ok, chunk, result
ok, chunk = pcall( love.filesystem.load, name ) -- безопасно загружаем файл
if not ok then
  print('The following error happened: ' .. tostring(chunk))
else
  ok, result = pcall(chunk) -- безопасно выполняем загруженный код

  if not ok then -- если произошла какая-то ошибка, то выводим её
    print('The following error happened: ' .. tostring(result))
  else
    print('The result of loading is: ' .. tostring(result))
  end
end

Смотрите также

Другие языки