aşağıdaki scala kodu Verilen: Ben altta yatan yazarak sorgulama yokScala neden Kısa ve Bayt türleri için bir "+ =" işleci tanımlar?
var short: Short = 0
short += 1 // error: type mismatch
short += short // error: type mismatch
short += 1.toByte // error: type mismatch
- o "Kısa + değer == Int" açık.
Sorularım şunlardır:
1. Operatörün kullanılabileceği herhangi bir yol var mı?
2. Değilse, neden kullanıcı Kısa & Byte?
[Ve uzantısı * =, | = & = vb]
sorun Kısa sınıfına "+ (Kısa)" tanımlandığını gibi görünüyor
Aslında Short, "+ =" veya "* =" yöntemine sahip değil, kısa http://www.scala-lang.org/api/current/index.html#scala belgesine bakabilirsiniz. Kısa . x someoperator = y, derleyici tarafından otomatik olarak x = x someoperator y'ye çevriliyor. – Eastsun
@Eastsun Ancak, Int :-) 'a op = b', genişletilmiş form için sözdizimsel şekerdir:' a = a op b', bu, tür hatasını açıklar (Kısa + Kısa -> Int). Kararın neden yapıldığını veya bu yapıyı niçin kullanabileceğini veya yapamadığını açıklamıyor. (C# 'da, byte + = 1' yerine ama byte = byte + 1 'yapamazsınız ve davranış standartta spesifiktir - C#' deki LHS türüne geri döndürülmüş bir döküm var). –
@pst Evet, aynı şeyi C# 'daki gibi de yapabilirsin (Doğru hatırlamıyorsam) – Eastsun