2017-09-18 17 views
1

それはこの構文は動作するはずのように思えるのではなく:Luaの癖:フォーマット()

> print "%i":format(42) 
%i 
[string "return print "%i":format(42)"]:1: attempt to index a nil value 

これも失敗した:

> print ("%i":format(42)) 
[string "print ("%i":format(42))"]:1: ')' expected near ':' 

作品のこの種を:

> print (("%i"):format(42)) 
42 
=> [string "return print ("%i"):format(42)"]:1: attempt to index a nil value 

誰かが何が起こっているのかを説明し、それをどうやってやるべきか教えていただけますか?

(私はstring.format("%i", 42)の承知しているが、私は、ドキュメントに示されている。この他の構文をしようとしている。)

編集:さらなる試験が、これは部分的にrepl.it.の問題であることを示していますインタプリタをローカルで実行しても、最後の例でエラーは表示されません。

答えて

2

これはstring.formatとは関係がありません。これはLuaの一般的な構文機能です。複雑な式のメソッド呼び出しでは、式をかっこで囲む必要があります。

Lua BNFprefixexpを参照してください:

prefixexp ::= var | functioncall | ‘(’ exp ‘)’ 
functioncall ::= prefixexp args | prefixexp ‘:’ Name args