我对Lisp中的lambda函数有很好的理解.Java似乎没有Lisp那样的灵活性.我如何在Java中考虑lambdas?鉴于下面的代码,我该怎么做?
public class Draw {
GraphicsContext gc;
static void draw(double x, double y, double w, double h, boolean drawRect) {
if (drawRect) {
gc.fillRect(x, y, w, h);
} else {
gc.strokeRect(x, y, w, h);
}
}
// How do I do that?
static void drawWithLambda(double x, double y, double w, double h /**, lambda */) {
lambda(x, y, w, h);
}
public static void main(String[] args) {
draw(0, 0, 50, 50, false); // OK
drawWithLambda(0, 0, 50, 50, GraphicsContext::fillRect); // …Run Code Online (Sandbox Code Playgroud) 我有以下 Verilog 代码,为什么我会收到“分配时不兼容的类型”-分配“pwmData = 4'b1000;”的错误?我在 Active-HDL 9.2 中遇到错误。
module PwmTestbench;
parameter dataWidth = 4;
reg clock, reset, pwmData[3:0], loadPwmData;
wire pwmOut;
Pwm #(.dataWidth(dataWidth)) pwm (
.clk(clock),
.reset(reset),
.data(pwmData),
.load(loadPwmData),
.out(pwmOut)
);
initial begin
clock = 1'b1;
reset = 1'b1;
loadPwmData = 1'b0;
end
always begin
#1 clock = !clock;
end
initial begin
#1 pwmData = 4'b1000; // # Error: VCP2852 pwm_tb.v : (29, 1): Incompatible types at assignment: .pwmData<reg[3:0]> <- 4'b1000<[3:0]bit>.
#1 loadPwmData = 1'b1;
#2 loadPwmData = 1'b0;
#1 …Run Code Online (Sandbox Code Playgroud)