
Борис
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? ;)

Denis
26.05.2017
12:09:20

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
переименуй класс

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

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

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

Aleksei
26.05.2017
19:01:12

Alexander
26.05.2017
19:02:47

Oleg
26.05.2017
20:11:57

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