2013-03-01 24 views
9

Lua'da bir paket yüklemeyi denemek isterim. Paket, ansicolors olup yalnızca daha iyi görünen bir konsol çıktısına sahip olmaktır.Lua'da paketleri nasıl yüklemeyi denemelisiniz?

Bu bir şekerdir ve kullanıcıların bu paketi yüklemeye zorlanmasını istemiyorum.

Yani böyle bir şey uğraş:

ansicolors = require 'ansicolors' or nil 

Ama düşündüğüm gibi, bu bir modülünü bulunamadı hatası yükseltmek ve yürütmeyi durdurur.

Benim sorum şu: Paketleri yüklemeye ve mümkün olmadığında daha basit özümlere geri dönmeye çalışmak için zarif bir çözüm var mı?

+1

Üzgünüm, yanıtımın ilk sürümü yanlıştı - pcall ikinci değeri olarak modülü döndürür. Lütfen güncellenmiş yanıtıma bakın. –

+0

Tamam, belgelere baktım. Örnekte küçük bir hata olsa bile, aradığım şey buydu. Teşekkürler –

cevap

18
local status, module = pcall(require, 'ansicolors') 
ansicolors = status and module or nil 
+0

neden 2. satırı var? sadece kullanın: 'yerel has_colors, ansicolors = pcall (gerektirir," ansicolors ") – daurnimator

+0

@daurnimator - OP sadece bir değişkende" module_value veya nil "almak istiyor çünkü. Aynı işlevsellik için iki değişken kullanmak biraz gereksizdir. –