-
int rb_get_kwargs(VALUE keyword_hash, const ID *table, int required, int optional, VALUE *values) -
キーワード引数のハッシュ
keyword_hashから、tableに並べたキーワードに対応する値を取り出してvaluesに格納します。取り出した要素はkeyword_hashから削除されます。tableの先頭のrequired個のキーワードは必須です。続くoptional個のキーワードは省略できます。optionalが負のときは、省略できるキーワードは-optional-1個で、tableにない残りのキーワードは無視されます。optionalが負でなければ、tableにないキーワードがあると例外が発生します。省略できるキーワードがkeyword_hashになければ、valuesの対応する要素にはQundefが設定されます。C API でキーワード引数を扱うのは Ruby で扱うよりも効率が悪くなります。 Ruby でラッパーメソッドを書き、キーワード引数を取らない C の関数を呼び出すことも検討してください。
- [PARAM]
keyword_hash: - 分解するキーワード引数のハッシュです。
- [PARAM]
table: - 取り出したいキーワードの ID の配列です。
- [PARAM]
required: - 必須のキーワードの個数です。
- [PARAM]
optional: - 省略できるキーワードの個数です。負の数も指定できます。
- [PARAM]
values: - 取り出した値を格納するバッファです。
- [RETURN]
-
valuesに格納した値の個数です。 - [EXCEPTION]
ArgumentError: - 必須のキーワードがないとき。
- [EXCEPTION]
ArgumentError: - 未知のキーワードがあったとき。