2012年8月14日 星期二

UNITY3D - JavaScript "in" 的妙用

前言:這裏指的Javascript是指Unity所用的,而非一般所用的Javascript,一般所用的Javascript無法使用in來當Contains使用。

C# 的ArrayList有Contains函式可以用來檢查元素是否存在於這個Array裡,但是JavaScript裡的Array就沒有Contains函式可以使用,難道只能用迴圈來檢查了嗎?
不!JavaScript有提供很棒的"in"關鍵字供我們使用,這關鍵字不但容易讓人理解而且功能強大,如:

var arr : int[] = [1, 2, 3, 4, 5];
for(var i : int in arr)
{
    Debug.Log(i); //1 2 3 4 5
}

像C#的foreach用法


var arr : Array = new Array(1, 2, 3, 4, 5);
if(3 in arr)
{
    Debug.Log(true);
}
else
{
    Debug.Log(false);
}

我們想要的Contains功能


var arr : int[] = [1, 2, 3, 4, 5];

if(3 in arr)
{
    Debug.Log(true);
}
else
{
    Debug.Log(false);
}

更棒的是BuildInArray也適用這個做法,C#的話似乎就必須用迴圈去找了。


if (foo == "bar" || foo == "foobar" || foo == "foo" )
{
 //...
}
// can be written as
if (foo in ["bar", "foobar", "foo"])
{
 //...
}

超棒的是不用再寫一堆||了,不但易讀易懂更易寫。

還有甚麼更好的應用就等大家分享了。



2 則留言:

  1. console.log(4 in [4,4,4,4]); // false

    回覆刪除
    回覆
    1. 不知道你是在什麼環境下做測試的呢?
      我在Unity3D的環境下4 in [4,4,4,4];是true的。

      刪除