[Scala] Документация - deprecated методы
От: Young yunoshev.ru
Дата: 15.07.13 12:28
Оценка:
Приветствую,

А где вообще у Scala живет документация? Особенно по старым версиям?
Есть скрипт на scala — жил, себе работал в продакшене, теперь его нужно на новый сервера.
Как я понимаю часть старых методов в новой скале умерло — ну как бы ок, решили переписать скрипт.

Но как найти документацию на старые методы, и на что их заменили?

Конкретно на findLastIndexOf — хочеться описания "мол делал, то-то, сейчас используйте то-то"

На http://docs.scala-lang.org/ поиском не ищеться
Re: [Scala] Документация - deprecated методы
От: dimgel Россия https://github.com/dimgel
Дата: 15.07.13 12:53
Оценка:
Здравствуйте, Young, Вы писали:

Y>А где вообще у Scala живет документация? Особенно по старым версиям?


http://www.scala-lang.org/downloads#api ?
Прям из главного меню сайта. Не факт, что там вообще все старые версии, но тут уж звиняйте. (Я раньше как скачивал дистр, сразу же через sbaz добавлял в него сорцы и доки. Всё было локально.)
Re[2]: [Scala] Документация - deprecated методы
От: Young yunoshev.ru
Дата: 15.07.13 13:06
Оценка:
Здравствуйте, 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
Re[3]: [Scala] Документация - deprecated методы
От: dimgel Россия https://github.com/dimgel
Дата: 15.07.13 14:22
Оценка:
Здравствуйте, Young, Вы писали:

Y>Вбиваю туда findLastIndexOf или findIndexOf и ничего не находиться.

Y>Как у знать бы, что эти методы делали и на что их менять?
Y>На годовалой версии все точно работало, так что не так и давно все было.

Y>Т.е. в новой документации методы просто удаляются?


Нет, сначала объявляют deprecated, разумеется (1-2 мажора они точно висят). Возможно, впрочем, что уже в вашей годовалой они были давно deprecated. Мне вспоминаются методы indexOf() и lastIndexOf(), а вот этих find* вообще не помню чтобы такие были. Возможно, совсем старые. Ну и не надо ожидать от быстро развивающегося языка, что они будут, подобно жаве, десятилетиями deprecated-методы хранить.
Re: [Scala] Документация - deprecated методы
От: avpavlov  
Дата: 15.07.13 14:27
Оценка: 6 (1)
Y>На http://docs.scala-lang.org/ поиском не ищеться

Можно в строке броузера указать свою версию, например

http://www.scala-lang.org/api/2.10.2/index.html#package
http://www.scala-lang.org/api/2.9.0/index.html#package
http://www.scala-lang.org/api/2.8.0/index.html#package

и т.д.

В 2.8.0 написано

def
findLastIndexOf (p: (Char) ⇒ Boolean) : Int

Returns index of the last element satisfying a predicate, or -1.
definition classes: SeqLike
deprecated: use lastIndexWhere instead

Re: [Scala] Документация - deprecated методы
От: avpavlov  
Дата: 15.07.13 14:33
Оценка: 6 (2) +1
Y>Конкретно на findLastIndexOf — хочеться описания "мол делал, то-то, сейчас используйте то-то"

Ещё, кстати, это наглядно показывает проблему implicit методов

Был метод WrappedString.findLastIndexOf, и String автоматически приводился через имплисит к данному типу.

Потом метод убрали, имплисит приведение ушло вместе с ним, и в ошибках видим

/src/build_arena.scala:161: error: value findLastIndexOf is not a member of String


Соответственно, копать человек начал от String, в котором этого метода отродясь не было, а то что он был во WrappedString из кода никак не следует и либо ты знаешь, где он был либо облом

Правда в особо запущенных случаях можно сделать декомпиляцию бинарников — ну а вдруг их нет? Да и не сразу опять же догадаешься.
Re[2]: [Scala] Документация - deprecated методы
От: Young yunoshev.ru
Дата: 15.07.13 14:42
Оценка:
Здравствуйте, 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)


Хорошо еще попытка погуглить данную ошибку быстро приводит к совету о том что "бинарники" от версии до версии не совместимы.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.