小编Dmy*_*sud的帖子

缺少Sized.unapply

In object Sized(在"shapeless/sized.scala"中)unapplySeq,遗憾的是不提供静态检查.例如,下面的代码在运行时将失败MatchError:

Sized(1, 2, 3) match { case Sized(x, y) => ":(" }
Run Code Online (Sandbox Code Playgroud)

如果有unapply方法而不是返回元组的选项,并且根据大小实例的大小构造元组的具体形状会更好.例如:

Sized(1) => x
Sized(1, 2) => (x, y)
Sized(1, 2, 3) => (x, y, z)
Run Code Online (Sandbox Code Playgroud)

在这种情况下,以前的代码片段将无法编译constructor cannot be instantiated to expected type.

请帮我实现unapplyobject Sized.这种方法是否已在任何地方实施

提前致谢!

scala shapeless

8
推荐指数
1
解决办法
232
查看次数

创建初始延迟触发器语法

请帮助我了解触发器创建语法

create trigger cool_trigger
    after insert or update
    on custom_object_reference
    deferrable initially deferred
    for each statement
    execute procedure do_something();

syntax error at or near "deferrable"
Run Code Online (Sandbox Code Playgroud)

我在用PostgreSQL 9.6.7

sql postgresql

4
推荐指数
1
解决办法
1831
查看次数

嵌套参数包扩展

请参阅下面的代码片段(矩阵乘法的实现)。
是否可以使用嵌套包扩展来简化它们以具有类似的内容
{{((a[r][k] * b[k][c]) + ...)...}...}

#include <array>
#include <utility>

template<typename T, size_t R, size_t C>
using Matrix = std::array<std::array<T, C>, R>;

template<typename A, typename B>
using mul_el_t = decltype(std::declval<A>()[0][0] * std::declval<B>()[0][0]);
Run Code Online (Sandbox Code Playgroud)

计算单个元素的助手。

template<size_t R1, size_t C2, size_t... C1_R2, typename A, typename B>
auto _mat_mul_element(const A &a, const B &b, std::index_sequence<C1_R2...>)
{
    return ((a[R1][C1_R2] * b[C1_R2][C2]) + ...);
}
Run Code Online (Sandbox Code Playgroud)

计算特定行的助手。

template<size_t R1, size_t... C2, typename C1_R2, typename A, typename B>
auto _mat_mul_row(const A &a, const B …
Run Code Online (Sandbox Code Playgroud)

c++ c++17

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

标签 统计

c++ ×1

c++17 ×1

postgresql ×1

scala ×1

shapeless ×1

sql ×1