А где вообще у Scala живет документация? Особенно по старым версиям?
Есть скрипт на scala — жил, себе работал в продакшене, теперь его нужно на новый сервера.
Как я понимаю часть старых методов в новой скале умерло — ну как бы ок, решили переписать скрипт.
Но как найти документацию на старые методы, и на что их заменили?
Конкретно на findLastIndexOf — хочеться описания "мол делал, то-то, сейчас используйте то-то"
Здравствуйте, Young, Вы писали:
Y>А где вообще у Scala живет документация? Особенно по старым версиям?
http://www.scala-lang.org/downloads#api ?
Прям из главного меню сайта. Не факт, что там вообще все старые версии, но тут уж звиняйте. (Я раньше как скачивал дистр, сразу же через sbaz добавлял в него сорцы и доки. Всё было локально.)
Здравствуйте, dimgel, Вы писали:
D>Здравствуйте, Young, Вы писали:
Y>>А где вообще у Scala живет документация? Особенно по старым версиям?
D>http://www.scala-lang.org/downloads#api ? D>Прям из главного меню сайта. Не факт, что там вообще все старые версии, но тут уж звиняйте. (Я раньше как скачивал дистр, сразу же через sbaz добавлял в него сорцы и доки. Всё было локально.)
Вбиваю туда findLastIndexOf или findIndexOf и ничего не находиться.
Как у знать бы, что эти методы делали и на что их менять?
На годовалой версии все точно работало, так что не так и давно все было.
Или погодите...предлагается последовательно скачивать дистрибутивы, чтобы наконец найти в оффлайн документации тот в котором еще есть данный метод?
Т.е. в новой документации методы просто удаляются?
Мне вот эти ошибки поправить нужно
/src/build_arena.scala:161: error: value findLastIndexOf is not a member of String
file={var pos : Int = layer.png.findLastIndexOf(_ =='/')
^
/src/drakoCommonTypes/exp.scala:193: error: value findIndexOf is not a member of Array[String]
var indexOpt:Int = otherTexPackMod.findIndexOf(_=="--sheet")
^
/src/drakoCommonTypes/exp.scala:199: error: value findIndexOf is not a member of Array[String]
indexOpt = otherTexPackMod.findIndexOf(_=="--data")
^
/src/drakoFlashDataPacker/ObjXFLReader.scala:95: error: type mismatch;
found : (String, String)
required: String
problemsList = problemsList + Pair[String,String](persName,new String("Bad obj instance - " + obj.objInstance._1))
^
/src/drakoFlashDataPacker/ObjXFLReader.scala:133: error: type mismatch;
found : (String, String)
required: String
problemsList = problemsList + Pair[String,String](persName,new String("no png"))
^
5 errors found
Здравствуйте, Young, Вы писали:
Y>Вбиваю туда findLastIndexOf или findIndexOf и ничего не находиться. Y>Как у знать бы, что эти методы делали и на что их менять? Y>На годовалой версии все точно работало, так что не так и давно все было.
Y>Т.е. в новой документации методы просто удаляются?
Нет, сначала объявляют deprecated, разумеется (1-2 мажора они точно висят). Возможно, впрочем, что уже в вашей годовалой они были давно deprecated. Мне вспоминаются методы indexOf() и lastIndexOf(), а вот этих find* вообще не помню чтобы такие были. Возможно, совсем старые. Ну и не надо ожидать от быстро развивающегося языка, что они будут, подобно жаве, десятилетиями deprecated-методы хранить.
Y>Конкретно на findLastIndexOf — хочеться описания "мол делал, то-то, сейчас используйте то-то"
Ещё, кстати, это наглядно показывает проблему implicit методов
Был метод WrappedString.findLastIndexOf, и String автоматически приводился через имплисит к данному типу.
Потом метод убрали, имплисит приведение ушло вместе с ним, и в ошибках видим
/src/build_arena.scala:161: error: value findLastIndexOf is not a member of String
Соответственно, копать человек начал от String, в котором этого метода отродясь не было, а то что он был во WrappedString из кода никак не следует и либо ты знаешь, где он был либо облом
Правда в особо запущенных случаях можно сделать декомпиляцию бинарников — ну а вдруг их нет? Да и не сразу опять же догадаешься.
Здравствуйте, avpavlov, Вы писали:
A>Правда в особо запущенных случаях можно сделать декомпиляцию бинарников — ну а вдруг их нет? Да и не сразу опять же догадаешься.
Бинарники то были. Там скрипт который запускается, устроен так — типа если есть скомпилированные файлы, то просто запускаем, если нету — то компилируем
Бинарники тоже перенесли на новую машину конечно же
Получили следующее при запуске
java.lang.NoSuchMethodError: scala.Predef$.intWrapper(I)Lscala/runtime/RichInt;
at drakoCommonTypes.Utils$.ArgsParse(exp.scala:139)
at build_arena$.main(build_arena.scala:193)
at build_arena.main(build_arena.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at scala.tools.nsc.util.ScalaClassLoader$$anonfun$run$1.apply(ScalaClassLoader.scala:71)
at scala.tools.nsc.util.ScalaClassLoader$class.asContext(ScalaClassLoader.scala:31)
at scala.tools.nsc.util.ScalaClassLoader$URLClassLoader.asContext(ScalaClassLoader.scala:139)
at scala.tools.nsc.util.ScalaClassLoader$class.run(ScalaClassLoader.scala:71)
at scala.tools.nsc.util.ScalaClassLoader$URLClassLoader.run(ScalaClassLoader.scala:139)
at scala.tools.nsc.CommonRunner$class.run(ObjectRunner.scala:28)
at scala.tools.nsc.ObjectRunner$.run(ObjectRunner.scala:45)
at scala.tools.nsc.CommonRunner$class.runAndCatch(ObjectRunner.scala:35)
at scala.tools.nsc.ObjectRunner$.runAndCatch(ObjectRunner.scala:45)
at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:74)
at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:96)
at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:105)
at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)
Хорошо еще попытка погуглить данную ошибку быстро приводит к совету о том что "бинарники" от версии до версии не совместимы.