Với mã scala sau:Tại sao Scala xác định toán tử "+ =" cho các loại Ngắn và Byte?
var short: Short = 0
short += 1 // error: type mismatch
short += short // error: type mismatch
short += 1.toByte // error: type mismatch
Tôi không đặt câu hỏi về đánh máy cơ bản - thì rõ ràng rằng "giá trị + Ngắn == Int".
Câu hỏi của tôi là:
1. Có cách nào để người vận hành có thể sử dụng không?
2. Nếu không, thì tại sao toán tử có sẵn để sử dụng trên Short & Byte?
[Và bằng cách mở rộng * =, | = & =, vv]
Thực ra, Short không có phương thức "+ =" hoặc "* =", bạn có thể tìm kiếm tài liệu cho Short http://www.scala-lang.org/api/current/index.html#scala. Ngắn . x someoperator = y đang dịch tự động x = x someoperator y. – Eastsun
@Eastsun Nhưng không Int :-) 'a op = b' là cú pháp đường cho dạng mở rộng:' a = a op b', giải thích lỗi kiểu (Short + Short -> Int). Nó không giải thích tại sao quyết định được đưa ra hoặc những gì sử dụng cấu trúc này có thể - hoặc có thể không - có. (Trong C# nó là hoàn toàn hợp pháp để làm 'byte + = 1' nhưng không phải' byte = byte + 1', và hành vi là cụ thể trong tiêu chuẩn - có một diễn viên tiềm ẩn trở lại loại LHS trong C#). –
@pst Có, bạn có thể làm điều tương tự trong Java như trong C# (Nếu tôi nhớ chính xác.) – Eastsun