LINUX.ORG.RU

некот куски кода слегка выносят мозг

Рекомендую отказаться, скала требует высокой квалификации и понимания, если какието трудности то лучше не лезть выше явы.

Deleted
()
Ответ на: комментарий от Deleted

мне скорей интересно не «как», а «почему именно так» и «зачем именно так».
понять, какую задачу в общем виде решает сопоставление с образцом. и по каким мотивам выбрали именно такую концепцию.

VladimirMalyk ★★★★★
() автор топика
Ответ на: комментарий от VladimirMalyk

сопоставление с образцом выполняет задачу сопоставления с образцом. У тебя есть какие-то другие концепции для того же самого, чтобы было с чем сравнивать?

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

ну, в общем виде сабж мне напоминает регулярки — только манипуляции выполняются не над строками, а над произвольными объектами.
сравниваемый объет генерирует своё представление чер unapply экстрактора и, если представление матчится, case выполняет соответствующую ветку (попутно набивая её переменными со значениями из представления).

VladimirMalyk ★★★★★
() автор топика
Ответ на: комментарий от VladimirMalyk

ну а сам {case ... case ...} суть частично определённая функция, и выполняется тот case, «сигнатура» которого сматчилась на предоставленное представление

VladimirMalyk ★★★★★
() автор топика
Ответ на: комментарий от VladimirMalyk

ну, в общем виде сабж мне напоминает регулярки

В первом приближении и для скалы - нормальная аналогия.

ну а сам {case ... case ...} суть частично определённая функция

Собсно, эта конструкция - на самом деле литерал типа PartialFunction[A, B], и может использоваться не только в конструкции match, но и вообще где угодно.

ovk48 ★★★
()

Суть клёвая, но некот куски кода слегка выносят мозг — например a :: b :: c ::Nil (экстракт списка, да?)

да, этот шаблон отработает когда в секвенции три элемента

Debasher ★★★★★
()

Такой экстрактор списка можно записать в виде List(a,b,c), будет проще читаться. И в целом лучше матчить не список, а Seq. Иначе всякие приколы могут быть.

Могу ещё посоветовать не вводить лишних символов - то что не используется заменяй на _.

maxcom ★★★★★
()

Это все сахар, если тебе неудобно, попробуй наделать такую же гору ифов с isInstanceof, проверкой размеров и т.д., разочаруйся, почитай доки, осиль, возрадуйся.

Имхо, один из самых подходящих случаев - матчинг регулярок с приписыванием групп переменным.

cdshines ★★★★★
()

Часто ли используете

да постоянно ))

a :: b :: c ::Nil

все очевидно после прочтения пары стриниц из мана и пары хоутушек же, не?

:: --- слепить список, Nil --- конец списка.

Rastafarra ★★★★
()
Ответ на: комментарий от Debasher

не знаю, 100500 лет не слышал русскоязычного термина

lazyklimm ★★★★★
()
Ответ на: комментарий от Rastafarra

я пока не всь сахар, который вижу, влёт перевариваю. ну после пары хаутушек то

VladimirMalyk ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.