Kokie yra „scala“ apribojimai dėl „priimtino sudėtingumo“ numatytų tipų?

Pagal „ Scala“ kalbos specifikaciją :

... vietinio tipo išvada leidžiama apriboti gautų ribų [tipo parametrų] sudėtingumą. Minimalūs ir maksimalūs tipai turi būti suprantami atsižvelgiant į priimtino sudėtingumo tipų rinkinį.

Praktiškai, kokios yra ribos?

Be to, ar yra skirtingų apribojimų, kurie taikomi išvestinių išraiškų tipams, o ne parametro apribojimams ir kokios yra šios ribos?

122
11 июля '12 в 7:03 2012-07-11 07:03 Owenas yra nustatytas liepos 11 d., 12: 07: 03-07 07:03
ответ 1 atsakymas

Nustačius tipus, kompiliatorius dažnai turi apskaičiuoti mažiausio tipo sąrašo viršutinę ribą (LUB). Pavyzdžiui, tipas, if (cond) e1 else e1 yra e1 ir e1 tipų LUB.

Šie tipai gali būti gana dideli, pvz., Bandykite tai REPL:

 :type Map(1 -> (1 to 10), 2 -> (1 to 10).toList) scala.collection.immutable.Map[Int,scala.collection.immutable.Seq[Int] with scala.collection.AbstractSeq[Int] with Serializable{def reverse: scala.collection.immutable.Seq[Int] with scala.collection.AbstractSeq[Int]{def reverse: scala.collection.immutable.Seq[Int] with scala.collection.AbstractSeq[Int]; def dropRight(n: Int): scala.collection.immutable.Seq[Int] with scala.collection.AbstractSeq[Int]; def takeRight(n: Int): scala.collection.immutable.Seq[Int] with scala.collection.AbstractSeq[Int]; def drop(n: Int): scala.collection.immutable.Seq[Int] with scala.collection.AbstractSeq[Int]; def take(n: Int): scala.collection.immutable.Seq[Int] with scala.collection.AbstractSeq[Int]}; def dropRight(n: Int): scala.collection.immutable.Seq[Int] with scala.collection.AbstractSeq[Int]{def reverse: scala.collection.immutable.Seq[Int] with scala.collection.AbstractSeq[Int]; def dropRight(n: Int): scala.collection.immutable.Seq[Int]... 

Šis įsipareigojimas įvedė tam tikrus sąžiningumo patikrinimus, siekiant apriboti tokių numatytų tipų gylį.

Neseniai atlikta darbo sujungimo su kompiliavimo procesu metu, kad rastumėte išvestinius tipus, kuriems reikia daug laiko apskaičiuoti, ir siūlome vietas, kuriose aiški tipo anotacija gali būti pagrįsta.

10
04 февр. atsakymą pateikė retronimas 04 vasaris. 2013-02-04 15:38 '13, 15:38, 2013-02-04 15:38

Kiti klausimai apie „ žymes arba „ Užduoti klausimą“