2016-07-22 49 views
1

我想創建一個函數,我檢查表中的字符串值。檢查在lua表中的字符串值

我若像變量:

local table = "blue" 

我的功能:

function check(color) 
    if color == "blue" then 
     return true 
    end 
return false 
end 

它的工作原理沒有麻煩,當我使用check(table),並返回true,但當變量是​​字符串值的表:

local table = {"blue", "yellow", "red"} 

當我嘗試使用func重刑check(table) 然後我的功能不工作,我得到的錯誤:

cannot convert a table to a clr type System.String

任何想法,爲什麼出現這種情況,如何解決?

+0

爲了避免麻煩你繼續學習語言,你可能要記住,'table'是內置的模塊之一的名字,並且已經包含一個全局變量一個函數表,對錶進行有趣的事情,比如用於排序的'table.sort()'。有幾個這樣的模塊,避免重複使用這些名稱是很常見的做法。從Lua 5.3開始,這些是'coroutine','debug','io','math','os','package','string','table'和'utf8'。 – RBerteig

+0

@RBerteig是的,我忘記了lua寫的這個例子的預定義單詞。謝謝你讓我注意到它。 – Emuuung

回答

1

首先你必須使用==而不是=,如果你想檢查是否相等。 像許多其他編程語言一樣=是賦值運算符,==是邏輯運算符等於 如果要檢查表是否包含字符串「blue」,則必須將其元素與「blue」進行比較,而不是表格本身!

你在這裏做什麼就像試圖找出桶裏是否有蘋果或香蕉。所以你檢查桶是否看起來像一根香蕉。

試試這個:

function check(colours) 
    for i,v in ipairs(colours) 

    if v == "blue" then 
     return true 
    end 

    end 

end 

你的代碼演示了一個相當缺乏對lua的基礎知識。 我推薦閱讀Lua的參考手冊和Lua的免費電子書編程。

http://www.lua.org/manual/5.3/

https://www.lua.org/pil/

+0

我必須承認=是一個錯字,是的,我對任何基本代碼的知識仍然是基本的(我只是一個編碼愛好者)。即使我嘗試閱讀手冊,但是我完全理解它卻相當困難,但謝謝您的回答。還有一個問題,該函數是否可以像我的第一個示例一樣使用表或單個已定義的變量? – Emuuung

+0

您提供的代碼僅檢查表格的第一個元素,如果它爲「藍色」則返回true,否則返回false。 'return false'應該在循環之後,而不是在顏色檢查的其他部分。 – user6245072

+0

@Emuuung不,它不適用於表和變量,您應該使用if-then-else語句來檢查傳遞的變量是表格還是其他類型的值。 – user6245072