0

我的 Chisel 代码有问题,我尝试了以下方法

deqReg         := Cat((0 until ports).map(ownReg === Cat(io.configVal(portBits*(_) + 2),io.configVal(portBits*(_)+ 1), io.configVal(portBits*(_)))))

但是在运行上述代码时出现以下错误

[error] /home/jayant/Dropbox/FIFO/fifo.scala:24: missing parameter type for expanded function ((x$1) => portBits.$times(x$1).$plus(2))
[error]     deqReg         := Cat((0 until ports).map(ownReg === Cat(io.configVal(portBits*(_) + 2),io.configVal(portBits*(_)+ 1), io.configVal(portBits*(_)))))
[error]                                                                                     ^
[error] one error found
[error] (compile:compileIncremental) Compilation failed
[error] Total time: 2 s, completed 4 Sep, 2015 12:31:40 PM

谁能告诉这个错误是什么以及如何纠正它。

4

1 回答 1

2

您的地图中有多个嵌套函数,这将使 Scala 编译器无法推断参数的类型。换句话说,您不能在此处使用“_”占位符。占位符只是替换表达式中最内层函数的参数。尝试一个完全指定的匿名函数(或部分函数),如下所示:

deqReg := Cat((0 until ports).map{ case i:Int => ownReg === Cat(io.configVal(portBits*i + 2), io.configVal(portBits*i + 1), io.configVal(portBits*i))})

Scala 是一种非常强大的语言,您很可能能够找到一种更优雅的方式来编写该代码。

于 2015-09-04T10:00:04.280 回答