Tôi có một số Item[] items
có chứa một số chỉ số cơ bản về chính nó.Tôi có thể sử dụng biểu thức lambda để tích lũy tổng trong biến không?
public float getAttackDamage() {
float bonus = 0;
for(int i = 0 ; i < items.length; i++){
if(items[i] != null){
bonus += items[i].getAttackDamage();
}
}
return baseAttackDamage + attackDamageScaling * level + bonus;
}
Mã trên là cách tôi hiện đang lặp qua các ký tự và áp dụng getAttackDamage()
cho kết quả trả về.
Có cách nào tôi có thể viết lại điều này để sử dụng biểu thức lambda thay thế không? Tôi đã thử làm theo:
public float getAttackDamage() {
float bonus = 0;
Arrays.stream(items).forEach(i -> bonus += i.getAttackDamage());
return baseAttackDamage + attackDamageScaling * level + bonus;
}
Nhưng nó không hoạt động (lỗi trình biên dịch). Điều này có khả thi không?
Đó là biên dịch ở đây ... bạn có đang sử dụng java 8 không? – luanjot
@luanjot Không có nó không biên dịch, 'tiền thưởng' không có hiệu quả cuối cùng. – Tunaki
OK, xin lỗi, tôi phải sửa đổi các bit đó. Chỉ cần kiểm tra xem bit lambda có đúng không. Tôi xin lỗi. – luanjot