取长运算符

取字符串长度、或有序数组包含的元素个数。
如果对象是 null 空值,返回0,
如果对象是字符串返回字符串长度,
如果对象是有序数组,返回数组长度 - 该操作符取的是索引自 1 开始的序列数组的长度。

否则检查对象是否定义了 _len 元方法,如果存在就调用 _len 元方法返回值,否则抛出异常.

运算符 说明
# 取长运算符(单目运算符)

例如:
import console;

var str = "";
if( #str ){
    console.log( 
"字符串非空",str );  
}
else{
    console.log ( 
"null或空串" ); 
}

因为 # 操作符对于一个空字符串或 null 值都会返回0,如果要判断非 null 并非空字符串时,可以使用 # 操作符简化判断语句.
要特别注意 # 只能用来计算有序数组的长度。

如果表中包含了稀疏数组 - 也就是说成员的数值键(索引)包含不连续的、中断的数值,那么不可将获取有序数组长度的 # 操作符用于稀疏数组。

下面的数组就包含了 null 值,属于数值键(索引)不连续的稀疏数组:
 var array = { "值:1"null"值:2""值:4"nullnull }
null 值就是没有值,所以数组尾部的 null 是无意义的,正确写法如下:
var array = { "值:1"null"值:2""值:4" } 
数组中间的 null 不可省略,但实际上 null 仍然是表示不存在的值,以上数组等价写法如下:
var array = {
    [1] = 
"值:1";
    [2] = 
"值:2";
    [4] = 
"值:4";    
}
这种稀疏数组可以用 table.range() 获取最小索引、最大索引。
也可以使用 table.eachArgs() 遍历稀疏数组。

示例:
import console.int;
var sparseArray = { "值:1"null"值:2""值:4" }

//获取稀疏数组长度
var min,max = table.range(sparseArray);

//遍历稀疏数组(可用于遍历函数的不定参数)
for i,v in table.eachArgs(sparseArray) {
    console.log(i,v)
    
}