非数字表示和#永不计数?

jawo

给定具有混合索引的表,例如:

table = {
  foo = 'bar'
  [1] = 'foobar'
}

我的问题是关于,#它给出了在遍历表时没有通过间隙分开的最后一个索引。

print(#table) 

将给出输出1

table = {
  foo = 'bar',
  lol = 'rofl',
  [1] = 'some',
  [2] = 'thing',
  [3] = 'anything',
  [4] = 'else'
}
print(#table)

应该打印4

我可以100%确定#不会被非数字索引分散注意力吗?那些索引真的每次都被忽略吗?

伊坦·赖斯纳

是的,您可以依靠它(在lua 5.1中)。

从lua参考手册

长度运算符由一元运算符#表示。字符串的长度是其字节数(即,每个字符为一个字节时字符串长度的通常含义)。

表t的长度定义为任何整数索引n,以使t [n]不为nil,t [n + 1]为nil。此外,如果t [1]为nil,则n可以为零。对于具有从1到给定n的非零值的常规数组,其长度恰好是n(其最后一个值的索引)。如果数组具有“空洞”(即,其他非nil值之间的nil值),则#t可以是直接在nil值之前的任何索引(也就是说,它可以将任何此类nil值视为末尾)数组)。

lua 5.2允许__len元方法在表上操作,这意味着#可以做其他事情。有关某些示例,请参见@kikito的答案。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してくださいdebugcn@gmail.com

編集
0

コメントを追加

0

関連記事

分類Dev

16進数字の文字表現の取得(16進値を表示するためのchar *の作成)

分類Dev

MapKitの英数字表現のカスタムピン

分類Dev

K&R1.6配列//配列構造の数字表現

分類Dev

再チャートの軸の数字を非表示にする

分類Dev

tmuxを使用したvimでの絵文字表示の問題

分類Dev

ソフトキーボード上のankushsachdeva絵文字表示(Android)

分類Dev

barButtonItemの表示/非表示

分類Dev

JTextFieldの非表示/表示

分類Dev

DivIDで表示/非表示

分類Dev

列の非表示/表示

分類Dev

DIVを非表示/表示

分類Dev

JavaScriptonClick非表示と表示

分類Dev

SearchViewが表示/非表示

分類Dev

TRAngularの表示/非表示

分類Dev

角度の非表示/表示

分類Dev

2つの数字が入力に挿入されている場合、divを表示/非表示にします

分類Dev

UITableViewCellsは非表示

分類Dev

Flutterで特定の数字の後の文字を非表示にするにはどうすればよいですか?

分類Dev

Androidソフトキーボードを非表示にし、EditTextで数字のみを許可する

分類Dev

DialogFragment:edittextに数字を入力すると、キーボードが自動的に非表示になります

分類Dev

ペアワイズTukeyHSDのコンパクトな文字表示を生成する方法

分類Dev

JavaScriptの非表示/表示要素

分類Dev

Select2を非表示/表示

分類Dev

Select2を非表示/表示

分類Dev

表示非表示要素流星の方法

分類Dev

出力の非表示/表示ShinyR

分類Dev

JavaScriptで<div>を表示/非表示

分類Dev

JavaScriptの表示/非表示div

分類Dev

境界線の非表示/表示

Related 関連記事

ホットタグ

アーカイブ