Lua 言語仕様:可変長引数

2016-04-24 :  PCクリニック
本文の前に、
-・・・ -・-
現時点での blogramのランクインカテゴリは、
7、2、0、0、1、 0、0、0、0、0(40)で、換算ポイント 88pt 。
「化学業界」「硝子業界」「FM COCOLO」「グルコサミン」「Firefox」bg値変動のみ。
「Perl」「C言語」「e-radio」「Python」「FM青森」全く変化無し。
・-・ - -・

さて、本文。

LuaJIT の FFI 機能を利用するとき、

C言語の“ヘッダ”の様な

  ffi.cdef[[ double sqrt(double); ]]

と云った定義を行う。


時には、

  ffi.cdef[[ void hoge(int,...); ]]

の様なものもある。

これって何?
“可変個数の引数”ですかネ?

取り敢えず「Lua 可変 引数」で検索したら、

「八角研究所」の
高速スクリプト言語「Lua」を始めよう!(3)
が見つかった。

  ・・・・・
  ・・・・・
  可変引数の利用
  関数の引数にデフォルト値を指定することはできませんが、
  可変引数を指定することが可能となっています。

  可変引数を利用するには、関数定義の引数の最後に「…」と記述します。
  そして、省略された引数を使用するところで、「…」を記述します。
-- my_printf を作ってみた
function my_printf(fmt,...)
print(fmt:format(...))
end

my_printf("[%s=%s]","neko",30)
  それでは、可変引数を1つずつ順に取り出したい場合などは
  どうすれば良いのかと言えば、一度、テーブルコンストラクタで
  変数に代入し、これを利用することができます。
-- 可変引数の値を1つずつ表示する方法
function f(...)
n = {...}
for i in pairs(n) do
print(i)
end
end

f(1,2,3)

それで、
Lua 5.2 リファレンスマニュアル
の、
3.4.10 - 関数定義
を、丁寧に読むと、

  ・・・・・
  ・・・・・
  関数が呼ばれると、実引数リストは仮引数リストの長さに調節されます。
  ただしその関数が 可変長引数関数 である場合は除きます。
  可変長引数関数は、仮引数リストの最後の 3 つの
  ドット ('...') で表されます。
  可変長引数関数では実引数リストを調節しません。
  代わりに、追加の引数をすべて集めて、それらを 可変長引数式
  を通して関数に提供します。
  可変長引数式も 3 つのドットで表されます。
  この式の値は、 複数の戻り値を返す関数に似た、
  追加の実引数すべてのリストです。
  可変長引数式が他の式の中や式リストの途中で使われた場合、
  そのリストの戻り値は 1 個に調節されます。
  可変長引数式が式リストの最後で使われた場合、
  調節は行われません (その最後の式が括弧で囲まれている場合
  を除きます)。
  ・・・・・
  ・・・・・

どうも、“3つのドット”は 最後 にしか書けないようですネ。


尚、最初の疑問事項は?

英語では、
'variadic'や'varargs'とある。

'variadic'とは「可変長引数」
'varargs'とは“Variable-length arguments”即ち「可変長引数」

でした。


本日はここまで。


Lua ( GSL Shell ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


160407
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
05 | 2017/06 | 07
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク