@scala_ru

Страница 255 из 1499
Юрий
28.11.2016
11:44:55
а что для вас "скала джун"?

Artur
28.11.2016
11:46:04
ну это я) наверное мне как раз бы и хотелось интересно узнать, что должен знать скала джуниор

Mikhail
28.11.2016
11:46:57
ты главное для себя ответь, что ты хочешь узнать о человеке - "умеет ли он решать поставленные задачи и понимает ли как работает скала" или "является ли он ходячим справочником по методам" ?

Artur
28.11.2016
11:47:38
я наверное неправильно выразился, но это меня будут собеседовать)

Google
Artur
28.11.2016
11:48:15
ну если бы я собеседовал скала джуна, то наверное все-таки первое

Mikhail
28.11.2016
11:48:20
все равно для себя можешь ответить, кто ты)

Юрий
28.11.2016
11:48:40
http://www.scala-lang.org/old/node/8610 Вот такая статья есть на эту тему.

KrivdaTheTriewe
28.11.2016
11:49:57
Скала джунов же не бывает :(

Artur
28.11.2016
11:51:14
хотелось бы быть первым вариантом. ага, спасибо, такую статью видел) но хотелось бы все-таки интересные вопросы, а там достаточно сжато описаны компетенции. еще одна из первых ссылок в гугле https://github.com/Jarlakxen/Scala-Interview-Questions но я уже поотвечал на эти вопросы и хотелось бы еще

Dmitry
28.11.2016
11:52:49
https://github.com/groz/interviews/blob/master/README.md

Artur
28.11.2016
11:54:24
ого, спасибо

Dmitry
28.11.2016
11:54:48
не за что =)

Denis
28.11.2016
12:01:53
и чем это скала вопросы?

обыкновенные алгоритмы

KrivdaTheTriewe
28.11.2016
12:02:14
Вообще там все по скале

Алгоритмов нет почти

Alexey
28.11.2016
12:02:55
http://insights.dice.com/2014/09/12/4-interview-questions-scala-developers/

Google
Artur
28.11.2016
12:07:55
@agorobets1 спасибо, видел отвечал :)

Вообще я думал вот как: я спрошу, и мне кто-то скажет "я вот это спросил бы", "я спросил бы вот то", "вот это можно/нужно знать". Но потом вспомнил, что люди работают как бы

Alexey
28.11.2016
12:31:16
дежурная наша задача - написать функцию которая находит максимальное четное и максимальное нечетное значение в переданном списке

Oleksandr
28.11.2016
12:33:12
в чем подвох?

Alexey
28.11.2016
12:33:34
ни в чем

Oleksandr
28.11.2016
12:33:40
банить за хитрый фолд? :)

Alexey
28.11.2016
12:33:45
нужно сделать ровно то что написано :)

Nikolay
28.11.2016
12:34:12
в чем подвох?
ваш код будет использован в продакшене без вашего ведома

?Ivan
28.11.2016
12:36:16
банить за хитрый фолд? :)
почему? чем плохо?

Oleksandr
28.11.2016
12:36:41
переизбыток "фп"

старый добрый while + var вполне ок

Grigory
28.11.2016
12:37:09
можно за партишн забанить и попросить использовать фолд, к примеру, а можно ничего не банить.

?Ivan
28.11.2016
12:37:35
Grigory
28.11.2016
12:38:14
ну это прямо java style
старый злобный вайл :D

Oleksandr
28.11.2016
12:38:23
ну это прямо java style
ну вот потому и банить :) ничего плохого в var нет

само собой, не стоит его наружу высовывать а внутри метода -- самое оно

?Ivan
28.11.2016
12:41:10
само собой, не стоит его наружу высовывать а внутри метода -- самое оно
так, а какие плюшки из Scala у вас принято использовать? (раз даже fold в отрешенных)

Oleksandr
28.11.2016
12:42:00
Grigory
28.11.2016
12:42:03
ArrayListы

?Ivan
28.11.2016
12:42:26
Google
Oleksandr
28.11.2016
12:42:31
просто лично я бы решение через фолд завернул

Юрий
28.11.2016
12:42:33
Grigory
28.11.2016
12:42:45
то, что _интуитивно_ понятно, полагаю

Юрий
28.11.2016
12:42:53
Да да

Daniel
28.11.2016
12:43:30
Трудно придумать критерий субъективнее

?Ivan
28.11.2016
12:44:31
просто лично я бы решение через фолд завернул
я вот пишу сейчас небольшого бота для личных нужд на скале, каждый раз заставляя писать себя как можно функциональнее, чтобы выбить из себя старые привычки. И тут ВНЕЗАПНО такое.

Oleksandr
28.11.2016
12:45:08
ну вот многие почему-то считают, что фп == хитрозадые мапы/редьюсы/фолды и специально пишут так, даже когда можно и нужно проще

Aleksei
28.11.2016
12:45:32
ну просто накинька как бы ты сам сделал? =)

Oleksandr
28.11.2016
12:45:47
Mikhail
28.11.2016
12:46:02
implicitly :-D

Daniel
28.11.2016
12:46:11
ну фолд то же самое, тут дело вкуса а не простоты

Kirill
28.11.2016
12:47:17
Да можно хоть через filter и max находить :)

?Ivan
28.11.2016
12:47:18
ну просто накинька как бы ты сам сделал? =)
Давайте начнем месить мой код. Кто бы его и как переписал ?

def nextButton(o: Integer) = InlineKeyboardButton(s"Ещё ${Pics.Forward}", callbackData = LpuOrder(o + 1)) def showAll = InlineKeyboardButton(s"${Pics.Expand}", callbackData = LpuAll()) def prevButton(o: Integer) = InlineKeyboardButton(s"${Pics.Backward} Назад", callbackData = LpuOrder(o - 1)) def lpuButton(lpu: Lpu) = InlineKeyboardButton(lpu.NAME, callbackData = Lpu(lpu.LPUCODE)) def collapseButton = InlineKeyboardButton(s"${Pics.Collapse}", callbackData = LpuOrder(1)) val values = repository.getLpus(chatId.get, order) val result = values.flatMap { case (lpus, hasNext) => { val markups = order match { case Some(o) => (for { lpu <- lpus button = Seq(lpuButton(lpu)) } yield button) ++ Seq( ((if (o > 1) Seq(prevButton(o)) else Seq()) :+ showAll) ++ (if (hasNext) Seq(nextButton(o)) else Seq())) case None => lpus.map(lpu => Seq(lpuButton(lpu))) :+ Seq(collapseButton) } val markup = InlineKeyboardMarkup(markups) message match { case None => api.request(SendMessage(chatId.get, "<b>Выберите следующего</b>", parseMode = ParseMode.HTML, replyMarkup = markup)) case Some(mes) => api.request(EditMessageReplyMarkup(chatId.get, message.map(_.messageId), replyMarkup = markup)) } } } result.onFailure { case e => println(e.printStackTrace()) }

Oleksandr
28.11.2016
12:47:54
use the pastebin, Luke

?Ivan
28.11.2016
12:47:58
ок

Mikhail
28.11.2016
12:48:01
selectAll ~> delete

я бы так переписал)

?Ivan
28.11.2016
12:52:34
https://scalafiddle.io/sf/0zvMkLy/2

Mikhail
28.11.2016
12:56:39
есть какая-нибудь аннотация вроде @deprecated, только которая сломает гарантированно сломает билд? )

Google
Daniel
28.11.2016
12:57:20
scalacOptions ++= Seq("-deprecation", "-Xfatal-warnings") вот так и @deprecated сломает

Mikhail
28.11.2016
12:58:06
не гарантированно

если этого не будет - то оно не будет ломать, а значит не подходит(

Daniel
28.11.2016
12:58:53
а что за кейс такой?

?Ivan
28.11.2016
12:59:37
гарантированно можно закомментарить метод, все что на него ссылается - сфэйлится

Mikhail
28.11.2016
13:01:21
а что за кейс такой?
пометить как @deprecated (как будто вырезал и чтобы не компилилось), но чтобы сообщение с причиной осталось.

Alexey
28.11.2016
13:02:00
вы лучше с простого начните - напишите максимум четного и нечетного )))

Daniel
28.11.2016
13:02:13
пометить как @deprecated (как будто вырезал и чтобы не компилилось), но чтобы сообщение с причиной осталось.
нет, это я понял, я не могу понять, почему добавление флагов в build.sbt не подходит

Admin
ERROR: S client not available

Mikhail
28.11.2016
13:02:43
потому никак не заставишь это делать тех, кто будет использовать библиотеку

хотя наверное можно схитрить через @implicitNotFound

но костыльно конечно)

Diemust
28.11.2016
13:05:05
@deprecated def deprecated = {throw new RunetimeException("deprecated")}

шоб знали

Alex
28.11.2016
13:12:06
(for { lpu <- lpus button = Seq(lpuButton(lpu)) } yield button)а чё, просто lpus.map(lpuButton) не?

или в сек внутри завернуть (я правда не понял зачем)

?Ivan
28.11.2016
13:16:18
Grigory
28.11.2016
13:16:50
а не то рили //

Alex
28.11.2016
13:16:50
тогда и паттерн матчилку можно убрать

мап на батоны ++ мап на ордер туСек ++ чотам дальше

Google
?Ivan
28.11.2016
13:17:31
тогда и паттерн матчилку можно убрать
нет, она нужна т.к. в конец дописываются разные элементы

Alex
28.11.2016
13:18:32
а, там скобки не так

?Ivan
28.11.2016
13:18:43
https://scalafiddle.io/sf/0zvMkLy/3

Alex
28.11.2016
13:18:50
ну тогда мап на батоны ++ фолд на ордер

lpus.map(lpu => Seq(lpuButton(lpu))) ++ order.fold(Seq collapse)(o => вся хуйня)

можно сек наружный вокруг фолда даж завернуть

или вообще выкинуть и вместо ++ :+

Alexey
28.11.2016
13:22:10
https://scalafiddle.io/sf/0zvMkLy/3
нормас. только вот как на строчке 25 делать не нужно )

?Ivan
28.11.2016
13:22:13
lpus.map(lpu => Seq(lpuButton(lpu))) ++ order.fold(Seq collapse)(o => вся хуйня)
order.fold(Seq collapse)(o => вся хуйня) вот здесь, я уже не понимаю, как дальше

нормас. только вот как на строчке 25 делать не нужно )
это пока костыль, логи потом прикручу. Сейчас если этого не сделать, то вообще никаких месаг о том, что где-то один из chain из Future сдох.

Alex
28.11.2016
13:23:07
`lpus.map(lpu => Seq(lpuButton(lpu))) :+ order.fold(collapseButton)(o => ((if (o > 1) Seq(prevButton(o)) else Seq()) :+ showAll) ++ (if (hasNext) Seq(nextButton(o)) else Seq()))`

опять же секи внутренние повыкидывать

?Ivan
28.11.2016
13:27:54
опять же секи внутренние повыкидывать
ага, спасибо. Сейчас про Option.fold вкурю и перепишу.

`lpus.map(lpu => Seq(lpuButton(lpu))) :+ order.fold(collapseButton)(o => ((if (o > 1) Seq(prevButton(o)) else Seq()) :+ showAll) ++ (if (hasNext) Seq(nextButton(o)) else Seq()))`
так, а что должно остаться от Seq(), после того как Seq наружу вытащить?

Alex
28.11.2016
13:30:42
хм, и правда

Daniel
28.11.2016
13:30:51
Aleksei
28.11.2016
13:32:54
https://scalafiddle.io/sf/gMzA4Ej/0 так считается?
конечно нет! а вдруг даблы? =)

Mikhail
28.11.2016
13:37:08
будет повод выставить счет за доработку

folex
28.11.2016
13:38:10
или задаться вопросом обладают ли нецелые числа четностью

Artur
28.11.2016
13:38:45
Скала джунов же не бывает :(
Общался сейчас с одним разрабом, говорит, что у них много бывает

Mikhail
28.11.2016
13:40:14
это ты в скалодром написал?

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