我想从存储在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 API时,我想知道为什么
sv_setref_iv()
将其IV
参数存储在IV
插槽中,sv_setref_nv()
将其NV
参数存储在NV
插槽中,sv_setref_pv()
将其void *
参数存储在IV
插槽中,而不是PV
插槽中?我有预感(CUR和LEN字段对于这样的变量没有意义),但我想得到XS知识渊博的人的意见:-)
以下代码片段是应该成为优化算法的精简版本:
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)