今天在寫
7 kyu: [BUG] XCOM-388: Mass spectrometer crashes
這一題時,
發現empty table的變數跟empty table的值用不相等比較時,
預期會是false (不相等),但其實會傳回true,
如下:
> a = {}
> if a ~= {} then
>> print(a)
>> end
table: 0x600002bbc640
(後記,非空table比對,也是一樣)
如果要檢查,table是否空時,
可用next檢查,next()為true時,不為空table.
寫出程設題,如下:
local spectrometer = {}
function spectrometer.get_heaviest(atomic_masses)
if atomic_masses and next(atomic_masses)then
if #atomic_masses < 500000 then
return math.max(table.unpack(atomic_masses))
else
local m = 0
for i = 1, #atomic_masses do
if atomic_masses[i] > m then
m = atomic_masses[i]
end
end
return m
end
else
return 0
end
end
return spectrometer別人寫的跟我的大致類似,
除非用第三方的API,才有比較簡潔的寫法。
除非用第三方的API,才有比較簡潔的寫法。
沒有留言:
張貼留言