You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Rcpp函数中声明带默认值的List类型入参?

你想要直接在入参处声明带默认值的列表是可以实现的,你之前的写法编译失败是因为C语法对默认参数的限制:C要求默认参数必须是编译期可确定的常量,而List::create是运行时才执行的动态构造逻辑,不符合语法要求,所以不能直接写在C++的参数声明里。

推荐使用Rcpp导出属性的.default参数指定R侧的默认值,C++侧直接接收List参数即可,代码示例如下:

#include <Rcpp.h>
using namespace Rcpp;

// [[Rcpp::export(.default = list(sv = list(a = c(0,0))))]]
NumericVector nicetry (List sv) {
  NumericVector aux_a = sv["a"];
  return aux_a;
}

/*** R
nicetry()
nicetry(list(a=rep(1,2)))
*/

该方案的运行效果和你给出的原生R函数完全一致:

> nicetry()
[1] 0 0
> nicetry(list(a=rep(1,2)))
[1] 1 1

如果你的使用场景不需要严格在C层面控制默认值,这个方案是最简洁的,完全符合你的需求。如果你必须在C层面处理默认值,你原来的Nullable方案已经是C++层面的规范写法。

内容的提问来源于stack exchange,提问作者Tomasz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 11:27:01