2013-11-14 4 views
6

Раньше эта проблема была раньше. Для функции мульти возвращаемого значенияНесколько возвращаемых значений в Lua

fn=function() return 'a','b' end 

Зов

print(fn()) возвращает a b

но вызов

print(fn() or nil) возвращается только a

почему? or не имеет значения, так как первый звонок прошел успешно?

ответ

4

Цитируя Programming in Lua §5.1 – Multiple Results

Lua всегда регулирует количество результатов от функции к обстоятельствам вызова. Когда мы вызываем функцию как инструкцию, Lua отбрасывает все результаты от функции. Когда мы используем вызов как выражение, Lua сохраняет только первый результат. Мы получаем все результаты только тогда, когда вызов является последним (или единственным) выражением в списке выражений.

В случае вашего примера, возвращаемое значение fn() используется как выражение (левый операнд or оператора), так что только первое значение сохраняется.

Смежные вопросы