小编Edw*_*ard的帖子

在打电话给清楚之后,穆斯是否有义务再次致电建筑商?

我想从存储在Moose类中的列表中获取元素.该类知道如何填充该列表本身.它有点像迭代器,除了我希望能够重置迭代器,并开始从该列表中获取相同的元素,就好像我还没有这样做.我打算如下打电话:

while( my $slotlist = $class->get_next_slotlist ) {
    # do something with $slotlist
}
Run Code Online (Sandbox Code Playgroud)

除此之外,正如我所说,我可能希望稍后再次重申相同的内容:

$class->reset_slotlists;
while( my $slotlist = $class->get_next_slotlist ) {
    # do something with $slotlist
}
Run Code Online (Sandbox Code Playgroud)

我想要按照以下精简版(模拟)版本来设计类:

package List;
use Moose;

has '_data' => (
    traits    => [ 'Array' ],
    is        => 'ro',
    predicate => 'has_data',
    lazy      => 1,
    builder   => '_build_data',
    clearer   => 'reset',
    handles   => {
        next => 'shift',
    },
);

sub _build_data { [ 'abc', 'def' ] }

package main;
use strict;
use warnings; …
Run Code Online (Sandbox Code Playgroud)

perl moose

5
推荐指数
1
解决办法
413
查看次数

为什么sv_setref_pv()将其void*参数存储在IV插槽中?

在查看Perl API时,我想知道为什么

  • sv_setref_iv()将其IV参数存储在IV插槽中,
  • sv_setref_nv()将其NV参数存储在NV插槽中,
  • 但是sv_setref_pv()将其void *参数存储在IV插槽中,而不是PV插槽中?

我有预感(CUR和LEN字段对于这样的变量没有意义),但我想得到XS知识渊博的人的意见:-)

perl xs

3
推荐指数
1
解决办法
202
查看次数

无法推断间接调用模板函数的类型

以下代码片段是应该成为优化算法的精简版本:

template<typename F>
double helper(F f, double x)
{
    return x;
}

template<typename F, typename L>
double optimize(F f, double x, L line_search)
{
    double y = line_search(f, x);
    return y;
}

int main()
{
    auto f = [](double x){ return (x - 2) * (x - 2); };
    double solution = optimize(f, -2, helper);
}
Run Code Online (Sandbox Code Playgroud)

我使用他们试图最小化的函数的模板参数对主函数 ( optimize) 和辅助函数 ( helper) 进行参数F化。但是,代码无法编译;编译器无法确定的类型line_search

t04.cpp: In function ‘int main()’:
t04.cpp:17:45: error: no matching function for …
Run Code Online (Sandbox Code Playgroud)

c++ templates function

2
推荐指数
1
解决办法
56
查看次数

标签 统计

perl ×2

c++ ×1

function ×1

moose ×1

templates ×1

xs ×1