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.
请帮我实现unapply了object Sized.这种方法是否已在任何地方实施
提前致谢!
请帮助我了解触发器创建语法
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
请参阅下面的代码片段(矩阵乘法的实现)。
是否可以使用嵌套包扩展来简化它们以具有类似的内容{{((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)