小编woo*_*luk的帖子

Scala中的线性化顺序

使用特征时,我很难理解Scala中的线性化顺序:

class A {
  def foo() = "A"
}

trait B extends A {
  override def foo() = "B" + super.foo()
}

trait C extends B {
  override def foo() = "C" + super.foo()
}

trait D extends A {
  override def foo() = "D" + super.foo()
}

object LinearizationPlayground {
    def main(args: Array[String]) {

      var d = new A with D with C with B;
      println(d.foo) // CBDA????
  }    
}
Run Code Online (Sandbox Code Playgroud)

它打印CBDA但我无法弄清楚为什么.如何确定特征的顺序?

谢谢

scala traits

40
推荐指数
4
解决办法
5858
查看次数

#define hell C/C++的替代/工具

在我们的C/C++项目中,我们使用一个充满#ifdef和#defines的配置头(~1000行)

#if (defined(HW_1) || defined(SOME_TECHNOLOGY_SUPPORTED)) && defined(OTHER_TECHNOLOGY_SUPPORTED)
 #define SOME_FEATURE_AVAILABLE
#endif
Run Code Online (Sandbox Code Playgroud)

在我们的构建配置中,我们预定义了一些传递给编译器的定义.这会在我们的配置头中产生不同的定义(如SOME_FEATURE_AVEILABLE).

由于我们的配置头很大,所以也有点混乱.

这个#define地狱还有其他选择吗?

或者是否有任何工具可以帮助查看在何种情况下设置了哪些定义.

我们正在开发嵌入式固件,因此我们不能用运行时替换条件编译.

c c++ buildconfiguration c-preprocessor

9
推荐指数
1
解决办法
668
查看次数

<mqueue.h> 和 mqd_t 在 OS X 上

我正在尝试在 OS X 上编译 FreeRTOS 的模拟。模拟代码是为 UNIX (POSIX) 编写的,所以我想我也可以在 OS X 上编译它。

但是我对一些 POSIX 线程处理有困难。XCode 找不到标题,因此缺少 mqd_t 类型。

我究竟做错了什么?我需要安装一些额外的库吗?我认为 OS X 与 POSIX 兼容。

谢谢

macos xcode posix

5
推荐指数
0
解决办法
2355
查看次数

Lambda 演算:构建一个每次迭代都接受更多参数的函数

我正在尝试构建一个接受给定数量的参数并始终返回相同值的函数。

这是家庭作业的一部分。提供了一个提示:

“k-way T”是一个接受 k 个参数并始终返回 T 的函数。“0-way T”就是 T。

其中 k 作为 Church Numeral 提供,T 是 True (\x.\yx) 的 lambda 表达式。

完整的任务是提供一个计算 k 路 OR 函数的 lambda 表达式。其中“布尔”参数的数量在“布尔”参数之前提供。例如:

((OR 3) F T F)
Run Code Online (Sandbox Code Playgroud)

但现在我正在尝试创建一个接受k 个参数并始终返回T 的程序。k作为第一个参数提供。

((TRUE 2) T F) == T
Run Code Online (Sandbox Code Playgroud)

所以基本上我不想创建一个函数,为每个教会数字“迭代”多一个参数。

但不知怎的,我完全陷入困境。

我可以只使用教堂数字来做到这一点吗?或者我需要递归(Y-Combinator)吗?

一般来说:是否有任何好的工具(例如可视化工具)支持创建 lambda 表达式。

我真的对 lambda 演算的力量感到惊讶,我真的很想学习它。但我不知道如何...

提前致谢

lambda-calculus

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

管道过滤器与责任链的区别

管道过滤器和责任链模式有什么区别.

对我来说,如果不是相同的话,这两种模式非常相似.但也许我想念一些东西.

谢谢

design-patterns

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

CMake 使用库预加载每个测试

在我们的 Linux 应用程序中,我们使用一个预先加载了LD_PRELOAD.

我想为每个测试预加载相同的库。我们使用 CMake 作为构建工具。

我可以告诉 CMake 它应该LD_PRELOAD为每个执行的测试添加到环境中吗?

测试使用make test.

linux cmake ctest

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