"的简写如果大于,则等于"在Acttionscript?

时间:2014-12-31 20:51:01

标签: java c# actionscript-3 operators ternary-operator

是否有编写以下代码的简写方法?通常在游戏中,我们希望确保某些事物不会留下边界,或者更一般地说,我们希望阻止数组的索引超出数组的范围。我总是用这种方式编写它,但我想知道在ActionScript,Java或C#中是否有简写#

在Actionscript中:

index++;
if (index > array.length - 1) index = array.length - 1;

据我所知,没有运营商可以实现这一点,但也许我错了。我知道三元运算符类似于if (condition) ? value if true : value if false

4 个答案:

答案 0 :(得分:2)

您可以使用Math.min

index = Math.min (index+1, array.length-1);

答案 1 :(得分:2)

对于if (condition) set variable的通用条件(与您的具体情况相反),您可以使用以下内容:

variable = (condition) ? (set if true) : (set if false)

在你的情况下,这转为:

index = index > array.length - 1 ? index = array.length - 1 : index;

它适用于Java,Actionscript和C#。

答案 2 :(得分:1)

如果你的代码看起来像这样(C#):

index++;

if (index > array.length - 1)
    index = array.length - 1;

无论如何,你都在进行相等测试,那么为什么不在作业之前去做呢?

if (index < array.Length)
    index++;

我不知道C#中的任何简短方法,但您可以编写自己的扩展程序以便使用,因此您不必在整个代码中复制/粘贴支票:

public static class ArrayExtensions
{
    // Returns the index if it falls within the range of 0 to array.Length -1
    //  Otherwise, returns a minimum value of 0 or max of array.Length - 1
    public static int RangeCheck(this Array array, int index)
    {
        return Math.Max(Math.Min(index, array.Length - 1), 0);
    }
}

使用它:

var index = yourArray.RangeCheck(index);

答案 3 :(得分:1)

尝试以下操作,它也更有效率,因为您不会做出不必要的增量:

if( index < array.length ) index++;