Мне показалось интересным, что эта головоломка, а именно этот код:
val (i, j): (Int, Int) = ("3", "4")
Сбой во время выполнения в Scala 2.9.1, но сбой во время компиляции с 2.10 M3 (и это здорово). Я пытаюсь отслеживать, что будет в новых версиях Scala, но не могу соединить все точки здесь. Какое улучшение привело к такому более точному поведению?
val (i:Int, j:Int) = ("3","4")
не работает во время компиляции в 2.9.1 - person Rogach   schedule 17.05.2012val p = x
, гдеp
- любой шаблон. Шаблонx: (Int, Int)
— это проверка типа во время выполнения, но помните, что во время выполнения из-за удаления типа тип(Int, Int)
на самом деле простоTuple2
. Вот почему он компилируется, но падает с исключением приведения класса во время выполнения. - person oxbow_lakes   schedule 17.05.2012val (i,j) = ("3","4")
. Это просто работает. И, как и в python, вам нужно будет преобразовать строки в целые числа, если вам нужна арифметика. - person paradigmatic   schedule 17.05.2012i
илиj
в качестве чисел. - person Daniel C. Sobral   schedule 17.05.2012let (a, b) : int * int = "3", "4"
выдает ошибку типа в OCaml или F#. - person J D   schedule 18.05.2012