@scala_ru

Страница 702 из 1499
Борис
26.05.2017
11:58:01
А вы миритесь что у вас код красным горит, или слезли с идеи?

Denis
26.05.2017
11:59:23
В некоторых местах забиваю

Херово когда IDE ограничивает

?Ivan
26.05.2017
12:02:17
и если она не подсвечивает, это не значит, что проект скомпилится ?

Google
Michael
26.05.2017
12:02:26
Скаланы, насущный вопрос: как называется фича, которая позволяет декларировать несколько одинаковых методов с разными type params. Например: foo[A, B]() и foo[A]()?

?Ivan
26.05.2017
12:02:36
в общем неизоморфна идея не разу

Michael
26.05.2017
12:02:59
type parameters ad-hoc polymorphism? ;)

Michael
26.05.2017
12:09:56
гм, очевидно

это слишком обще

как это работает на уровне компилятора?

мне это видится так, что после type erasure у нас получаются два метода foo() и foo()

Юрий
26.05.2017
12:10:35
А разве из-за type erasure

Michael
26.05.2017
12:10:40
почему конпелятор не ругается на конфликт?

Юрий
26.05.2017
12:10:42
эти методы не сольются в один?

Michael
26.05.2017
12:10:51
в том то и дело, что не сливаются

Юрий
26.05.2017
12:11:04
а ты попробуй вызвать с обоими вариантами

Google
Michael
26.05.2017
12:11:10
на уровне скалы я могу вызвать отдельно foo[A,B]() и foo[A]()

Юрий
26.05.2017
12:11:16
type erasure в рантайме приводить к ошибкам

Борис
26.05.2017
12:13:22
error: double definition: have same type after erasure: ()Int class A { def foo[A]() = 1; def foo[A, B] = 2 }

Юрий
26.05.2017
12:15:47
вот тайна и раскрылась

Michael
26.05.2017
12:16:47
Welcome to Scala 2.11.8-20160304-000000-1706a37eb8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_131). Type in expressions for evaluation. Or try :help. scala> def foo[A]() = 1 foo: [A]()Int scala> def foo[A, B]() = 2 foo: [A, B]()Int scala> foo[Int]() <console>:13: error: wrong number of type parameters for method foo: [A, B]()Int foo[Int]() ^ scala> foo[Int, Int]() res1: Int = 2 scala>

Welcome to Scala 2.11.8-20160304-000000-1706a37eb8 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_131). Type in expressions for evaluation. Or try :help. scala> def foo[A, B]() = 1 foo: [A, B]()Int scala> def foo[A]() = 2 foo: [A]()Int scala> foo[Int]() res0: Int = 2 scala>

интересно...

Борис
26.05.2017
12:22:34
И так работает: class A { def foo[A]() = 1; def foo[A, B]() = "" }

Michael
26.05.2017
12:26:02
scala> class Foo { | def foo[A <: Any](): Unit = () | def foo[A <: Any, B <: Int](): Unit = () | } <console>:13: error: double definition: def foo[A](): Unit at line 12 and def foo[A, B <: Int](): Unit at line 13 have same type after erasure: ()Unit def foo[A <: Any, B <: Int](): Unit = () ^

у меня чо-то не

2.11 скала

Юрий
26.05.2017
12:27:55
И так работает: class A { def foo[A]() = 1; def foo[A, B]() = "" }
Тут имя класса равно тайп параметру

переименуй класс

Michael
26.05.2017
12:28:27
да, кстати

Борис
26.05.2017
12:30:17
Тут имя класса равно тайп параметру
ожидаемо ничего не поменялось)

Michael
26.05.2017
12:35:35
все, разобрались

Юрий
26.05.2017
12:36:46
Ииии?

Michael
26.05.2017
12:36:48
у нас тут context bounds присутвуют

foo[I: Bar]()

Юрий
26.05.2017
12:37:14
эээ

Google
Юрий
26.05.2017
12:37:51
минифицированные примеры не совсем соответсвовали реальным?

Michael
26.05.2017
12:38:50
да

my bad, сорри ;)

там просто жеский код с большим кол-вом type bounds, за лесом которых я не разглядел context bound

Mikhail
26.05.2017
13:57:49
почему конпелятор не ругается на конфликт?
бывает, что ругается. есть способ обойти, если очень надо https://stackoverflow.com/questions/41617429/in-scala-all-abstract-types-have-the-same-type-after-erasure

Arthur
26.05.2017
15:55:54
гайз, вопрос, я вот впервые в жизни пилю oauth авторизацию

получив токен, на основе каких данных вы линкуете пользователя к социалке

емеил или внутренний id социалки или я что-то делаю не так?

Alexandr
26.05.2017
15:57:01
Внутренний id соц. сети

Email позволяют не все соц. сети вытащить

Arthur
26.05.2017
15:57:49
окей, сенк, а че делаете с акссес токенами

их тоже сохраняете?

допустим я сделал операцию с oauth и потом хочу еще что-то

через день

Alexandr
26.05.2017
15:59:00
У фейсбука можно на основе кратковременного токена получить долговременный. Вот долговременный я сохраняю

Arthur
26.05.2017
15:59:19
окей, спасибо

Alexandr
26.05.2017
15:59:35
Правда, давно это было, может что-то поменялось

Arthur
26.05.2017
16:10:46
нашел что в твиттере токен не експайрится

только если тебе его не прикроют руками

Alex
26.05.2017
16:35:47
http://www.scala-lang.org/blog/2017/05/26/whats-new-scala-native.html

Google
Sergey
26.05.2017
17:08:02
scala> def test(x: Option[Boolean]) = x match { | case Some(_) => "some" | case None => "none" | case null => "zachem" } test: (x: Option[Boolean])String scala> test(None) res0: String = none scala> test(Some(true)) res1: String = some scala> test(null) res2: String = zachem втф? почему при наличии Some и None еще и null надо матчить?

Kirill
26.05.2017
17:08:48
не надо его матчить, ты же уже передаешь Option туда

Sergey
26.05.2017
17:09:45
тогда scala> test(null) Exception in thread "main" scala.MatchError: null

Daniel
26.05.2017
17:10:13
так нефиг нуллы плодить

Kirill
26.05.2017
17:10:16
+1

принимай Boolean и оборачивай его внутри в опшн уже

и матчи

Sergey
26.05.2017
17:10:54
Это в Erlang чате прикопались )

Kirill
26.05.2017
17:11:33
ммм ну это всё ссылочные типы => можно везде прокинуть null, но как бы это кривой код, так писать не надо

у тебя ещё и боксинг там сработает вдобавок ))

Alexandr
26.05.2017
17:16:31
Как жалко, что вместо любого объекта можно подставить null

Sergey
26.05.2017
17:23:45
точняк

Arthur
26.05.2017
17:26:41
джависты бы не только поспорили но еще бы предложили решение неудобств с "?." оператором

Artem
26.05.2017
17:33:44
Шутка за 300

Arthur
26.05.2017
17:43:13
обидел?

Artem
26.05.2017
17:52:45
Ни в коем случае

Sergey
26.05.2017
17:55:27
null как флаг вроде норм, или нет ? (в java) главное что бы не было null.foobar()

Kirill
26.05.2017
17:56:30
null как флаг? ну везде с null бороться пытаются

Arthur
26.05.2017
17:58:09
боженька дал Optional в джаву

для этих дел

Google
Nikolay
26.05.2017
17:58:45
self ! null

Kirill
26.05.2017
17:59:49
def a: Option[Int] = null

Arthur
26.05.2017
18:01:24
и еще 1000 способов выстрела в ногу

Aleksei
26.05.2017
18:02:48
боженька дал Optional в джаву
Боженька дал, а джависты не заадоптили, упертые, обратнуб совместимость надо держать

Arthur
26.05.2017
18:04:01
я бы сказал что можно рефакторить код и делать границы, типо вот эта часть не рефактореная и если None то сделать null

но видимо тесты в код тоже не завезли

так что не порефакторить

Alexander
26.05.2017
18:51:21
Igor
26.05.2017
18:55:23
А в dotty не добавят not null типы?

Aleksei
26.05.2017
18:58:00
Он говно.
Кстати да, ибо Optional is being heavily used by standard scala library пока явистам просто дали Optional и все тут, типа вот вам аргумент против перехода на Scala.

Alexander
26.05.2017
19:00:13
Кстати да, ибо Optional is being heavily used by standard scala library пока явистам просто дали Optional и все тут, типа вот вам аргумент против перехода на Scala.
Да я вообще огребал с ним без утилитных функций. Cyclops отчасти решал проблему, но таки ФП в Джаве сложно.

Aleksei
26.05.2017
19:01:12
Да я вообще огребал с ним без утилитных функций. Cyclops отчасти решал проблему, но таки ФП в Джаве сложно.
Ну вот у меня есть друг, который меня привел в яву, он типа до сих пор на яве, я ему говорю вот скала это фп, а он мне про лямбды в восьмерке начинает =) Ну такое

Aleksei
26.05.2017
20:18:44
фп оно в сердце и в чистоте помыслов, а не в языке
Чистое сердце выберет правильный язык

Nick
26.05.2017
20:27:17
@aleksei_t опять ты джаву явой называешь, фу таким быть)

Daniel
27.05.2017
03:32:22
Sergey
27.05.2017
07:28:31
Ну вот у меня есть друг, который меня привел в яву, он типа до сих пор на яве, я ему говорю вот скала это фп, а он мне про лямбды в восьмерке начинает =) Ну такое
Джава же для ентерпрайза, она и должна быть такой инертной, завозить должны проверееное и дубово-простое, а не экспериментальное. А Scala неплохо бы освоить хотябы в целях развития...

Страница 702 из 1499