有可能吗?如果是这样,怎么样?
以下代码在IEX中执行。
但是,编译后的代码会生成运行时错误。
int main ()
{
std::vector<int> foo = {0, 42, 0, 42, 0, 42};
std::replace(foo.rbegin(), foo.rend(), foo.front(), 13);
for(const auto & i : foo)
std::cout << i << '\t';
std::cout << std::endl;
return 0;
}
错误就像这样:我想知道如何正确地打电话。
:ets.fun2ms(fn({a,b}) -> a and b end)
答案 0 :(得分:5)
不,你不能。至少没有&#34;真正的功能&#34;就像错误说的那样。 Elixir函数的定义与Erlang中的函数略有不同,这就是为什么这个函数不起作用的原因。幸运的是,您可以使用此存储库https://github.com/ericmj/ex2ms
完成相同的操作正如README中所述:
iex(1)> import Ex2ms
iex(2)> fun do { x, y } = z when x > 10 -> z end
[{{:"$1",:"$2"},[{:>,:"$1",10}],[:"$_"]}]
iex(3)> :ets.test_ms({ 42, 43 }, v(2))
{:ok,{42,43}}
iex(4)> :ets.test_ms({ 0, 10 }, v(2))
{:ok,false}
宏Ex2ms.fun/1
与ets:fun2ms/1
的作用相同。
我希望这会有所帮助。