2016-07-22 15 views
1

テーブル内の文字列値をチェックする関数を作成しようとしています。ルアのテーブル内の文字列値を確認します

私は次のように変数を宣言する場合:

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.sort()'のような、テーブルに対して興味深いことをする関数のテーブル。このようなモジュールがいくつかありますが、それらの名前を再利用することは避けてください。 Lua 5.3以降、これらは 'coroutine'、' debug'、 'io'、' math'、 'os'、' package'、 'string'、' table'、 'utf8'です。 – RBerteig

+0

@RBerteigはい、私はこの例を書くためにluaのための定義済みの単語について忘れていました。私に気付かせてくれてありがとう。 – Emuuung

答えて

1

まず、=の代わりに= =を使用して、等価性をチェックする必要があります。 多くの他のプログラミング言語と同様に、代入演算子と==は論理演算子である テーブルに文字列 "blue"が含まれているかどうかを確認するには、テーブル自体ではなく "blue" !

あなたがここで行うことは、バケツにリンゴやバナナがあるかどうかを調べるようなものです。バケツがバナナのように見えるかどうかを確認します。あなたのコードがLuaの者の基本についての知識のかなりの欠如を示してい

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

    if v == "blue" then 
     return true 
    end 

    end 

end 

はこれを試してみてください。 私はLuaリファレンスマニュアルとLuaの無料eBookプログラミングを読むことをお勧めします。あなたが言語を習得し続けている、あなたは `table`は、組み込みモジュールのいずれかの名前であり、すでに含むグローバル変数であることを覚えておきたいかもしれないトラブルを防ぐために

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

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

+0

私は=が誤字であったことを認めなければなりません。基本的なコードについての知識はありません(私は単にコーディングのファンです)。あなたがマニュアルを読んでみると、それを完全に理解することはかなり難しいですが、あなたの答えに感謝します。もう1つの質問ですが、その関数はテーブルまたは1番目の例のような単一の定義済み変数で動作しますか? – Emuuung

+0

あなたが提供したコードは、テーブルの最初の要素だけをチェックし、 "青"の場合はtrueを、それ以外の場合はfalseを返します。 'return false'はループの後でなければならず、カラーチェックのelse部分ではありません。 – user6245072

+0

@Emuuungいいえ、テーブルと変数の両方で動作しないため、渡された変数がテーブルか別のタイプの値かどうかを確認するif-then-elseステートメントを使用する必要があります。 – user6245072

関連する問題