首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >duktape如何解析duktape c函数中字符串对象类型(类似于Number对象)的参数

duktape如何解析duktape c函数中字符串对象类型(类似于Number对象)的参数
EN

Stack Overflow用户
提问于 2017-11-14 21:29:00
回答 1查看 253关注 0票数 0

如何在duktape c函数中检查String对象/Number对象参数类型,并解析String对象/Number对象的值。有像duk_is_object()这样的通用api,但是我需要正确的对象类型来解析值。

代码语言:javascript
复制
ex: 
ecmascript code
  var str1 = new String("duktape");
   var version = new Number(2.2);
 dukFunPrintArgs(str1,str2); 

duktape c function :
dukFunPrintArgs(ctx)
{
  // code to know whether the args is of type String Object / Number Object

}
EN

回答 1

Stack Overflow用户

发布于 2017-11-15 15:54:41

你在哪里找到了如何在duktape中注册C函数的信息?该位置当然也有关于如何访问传递给它的参数的详细信息。在duktape.org的主页上,您可以找到一个入门示例:

代码语言:javascript
复制
3 Add C function bindings

To call a C function from Ecmascript code, first declare your C functions:

/* Being an embeddable engine, Duktape doesn't provide I/O
 * bindings by default.  Here's a simple one argument print()
 * function.
 */
static duk_ret_t native_print(duk_context *ctx) {
  printf("%s\n", duk_to_string(ctx, 0));
  return 0;  /* no return value (= undefined) */
}

/* Adder: add argument values. */
static duk_ret_t native_adder(duk_context *ctx) {
  int i;
  int n = duk_get_top(ctx);  /* #args */
  double res = 0.0;

  for (i = 0; i < n; i++) {
    res += duk_to_number(ctx, i);
  }

  duk_push_number(ctx, res);
  return 1;  /* one return value */
}

Register your functions e.g. into the global object:

duk_push_c_function(ctx, native_print, 1 /*nargs*/);
duk_put_global_string(ctx, "print");
duk_push_c_function(ctx, native_adder, DUK_VARARGS);
duk_put_global_string(ctx, "adder");

You can then call your function from Ecmascript code:

duk_eval_string_noresult(ctx, "print('2+3=' + adder(2, 3));");

duktape中的核心概念之一是堆栈。值堆栈是存储参数的位置。在Getting Started页面上阅读更多内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47287077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档