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
您可以使用
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++;