Về biểu thức lambda trong java?

  • Mình có một đoạn code sau:
bombermanAnimImage.addAction(
                Actions.sequence(
                        Actions.run(() -> bombermanAnimImage.setCurrentAnim("walking")),
                        Actions.moveBy(130, 0, 5f),
                        Actions.run(() -> {
                            if (GameManager.playerLives > 0) {
                                bombermanAnimImage.setCurrentAnim("idling");
                            } else {
                                bombermanAnimImage.setCurrentAnim("shocked");
                            }
                        })
                )
        );
  • Bây giờ làm sao để thay thế “() ->” về biểu thức bình thường . M.n cho mình xin ý kiến. Thanks nhiều :smiley:

Thì cứ mỗi chỗ -> () tách riêng ra 1 function thôi.

3 Likes

Rất khó để khôi phục biểu thức lamda 1 cách chính xác trong java nếu không biết đầy đủ thông tin về thư viện bạn đang dùng. Lí do là vì biểu thức lamda trong Java đã hide đi thông tin về interface cần truyền vào. Tuy nhiên mình đoán là sẽ khôi phục thành câu lệnh sau:

Actions.run(() -> bombermanAnimImage.setCurrentAnim("walking"))

trở thành

Actions.run(new Runnable() {
     @Overrides 
     public void run() {
          bombermanAnimImage.setCurrentAnim("walking");
     }
})

PS: tốt nhất bạn nên nghiên cứu về biểu thức lamda là gì và dùng như thế nào 1 cách cặn kẽ thì sẽ tự giải quyết được vấn đề này thôi. Chỉ là syntax chứ chưa phải cái gì cần tư duy cả

7 Likes

Thanks bạn nè…

Thanks bạn rất nhiều. Mình đang test code libgdx nên tiện hỏi về lambda vì thấy nó cũng giống oop kế thừa

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?