Acttionscript中“如果大于,则等于”的简写

本文关键字:如果 大于 如果大于 Acttionscript | 更新日期: 2023-09-27 18:35:44

有没有速记方法来编写以下代码?通常在游戏中,我们希望确保某些东西不会留下边界,或者更一般地说,我们希望阻止数组的索引超出数组的边界。我一直是这样写的,但我想知道Actionscript,Java或C#中是否有速记

在操作脚本中:

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

据我所知,没有操作员可以做到这一点,尽管也许我错了。我知道三元运算符与此类似if (condition) ? value if true : value if false

Acttionscript中“如果大于,则等于”的简写

您可以使用

Math.min

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

对于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#。

如果您的代码如下所示 (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);

请尝试以下操作,它也更有效,因为您不会进行不必要的增量:

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