让我们假设我们有一个密封的特征和一些继承它的案例类:
sealed trait SomeTrait
final case class ClassA(somevalue : Int) extends SomeTrait
final case class ClassB(str : String) extends SomeTrait
(...)
Run Code Online (Sandbox Code Playgroud)
现在我想让所有这些案例类将特征扩展为集合.我将如何继续这样做?我甚至需要在什么类型的类中引用这些类?weakTypeTag
?别的什么?
从一般意义上讲,这类似于Travis Brown在这里对case对象做同样的回答.
我的应用程序上下文:我有一个HTTP服务器和一个继承单个密封特征的case类的给定文件(更确切地说:这个层次结构实现了命令设计模式).现在,我想为每个案例类的HTTP-POST自动创建一个端点,并将传入的数据解析upickle
到与该端点对应的案例类.以编程方式我不需要其他任何类/类型.
使用ModulePass,我的目标是向上遍历一个SSA图:从一个带有0..2个操作数的语句(大多数操作码都属于那个),我想找出两件事:
例如,假设遵循LLVM IR:
define i32 @mul_add(i32 %x, i32 %y, i32 %z) {
entry:
%tmp = mul i32 %x, %y
%tmp2 = add i32 %tmp, %z
ret i32 %tmp2
}
Run Code Online (Sandbox Code Playgroud)
我将从return语句开始.现在我想知道我要回来的东西:
我如何使用C++ API来实现这些步骤?
我可能想要使用昂贵的方法并根据副作用返回结果.例如,取决于一天/一周的时间和量子时间动力学的蒙特卡罗模拟.因为它很贵而我可能不需要它,我会使用Scalaslazy val
lazy val maybeUnusedValue = getDayOfWeek
Run Code Online (Sandbox Code Playgroud)
现在我的程序仍在运行12个小时.我想重做计算,因为我的日子可能在此期间发生了变化.
是否有一种简单的方法可以强制Scala返回maybeUnusedValue
到未初始化的状态,因此强制重新计算其下一次使用?
我开始使用DirectX(和SharpDX,因此仅在C#/ hlsl中编程)并且我正在尝试构建自己的相机类.它应该是可旋转的,允许向前和向后移动以及"侧向"运动(经典的第一人称运动通常映射到A和D,在我的情况下加上和向下).为了方便bugfixing模型和世界空间是在我的情况一样,透视投影尚未实现,如旋转的摄像头,和我的相机应该是正Z轴看(到屏幕).我的错误修正模型是一个简单的四边形,宽度和高度为1.f,z = 0并且在屏幕上居中.
为了便于使用,我找到了DirectX Matrix.LookAtLH()
并使用它构建我的矩阵,用于从世界到视图坐标的平移,基于我的相机在世界坐标中的位置,向上矢量(现在 - 没有旋转 - 总是正Y轴)和世界坐标中的目标点.
我的(顶点)着色器使用与此矩阵的简单乘法:
output.position = mul(position, worldToView);
LookAt-Matrix计算如下:
Matrix.LookAtLH(vec3(0, 0, -1), vec3(0, 0, 0.5f), vec3(0, 1, 0))
得到这张图片:
现在我想将相机移到右边,在这种情况下,将1.f添加到它的X坐标.我的预期结果与之前的四元组相同,向左移动了一点.
我构建了一个新的LootAt矩阵,通过相同的向量移动眼睛坐标和目标坐标:
Matrix.LookAtLH(vec3(1, 0, -1), vec3(1, 0, 0.5f), vec3(0, 1, 0))
结果如下:
我移动相机越多越好,但屏幕中心仍保持四边形的中心.这与我对潜在的误解有关Matrix.LookAtLH
吗?
我想在我的代码中为每个函数调用动态指令计数,以便我可以将该计数器视为:
name of function | instructions
foo() | 3533
bar() | 1234
Run Code Online (Sandbox Code Playgroud)
以下是子问题:
perf
吗?perf
我应该使用什么样的标志来获取(至少)这些信息?我有一个HashMap<u32, u32>
,我用它作为迭代器:
for (key, mut value) in map {
if value == 0u32 {
value = 1u32;
}
println!("{}", value);
}
Run Code Online (Sandbox Code Playgroud)
这将编译并打印出的预期值,但它实际上改变地图的价值,而我遍历它,还是我只是阴影的实际值和值迭代结束后写了吗?
我是否正确假设迭代迭代与一般的Rust迭代器一起工作?
scala ×2
c# ×1
directx ×1
directx-11 ×1
instructions ×1
linux ×1
llvm ×1
llvm-c++-api ×1
llvm-ir ×1
matrix ×1
perf ×1
reference ×1
rust ×1
scala-macros ×1
sharpdx ×1