Size: a a a

Scala User Group

2020 January 19

Oℕ

Oleg ℕizhnik in Scala User Group
Т.е. определение метода через паттерн матчинг.
Нет, такого нет.
источник

D

Dima Kubitskiy in Scala User Group
источник

D

Dima Kubitskiy in Scala User Group
нет проблем и тип и значение аргумента матчить
источник

D

Dima Kubitskiy in Scala User Group
ну и при желании полиморфизм при разных значениях аргумента
источник

KS

Kirill Shelopugin in Scala User Group
Ого, даже русскоязычная версия есть
источник

AS

Aleksei Shashev in Scala User Group
вопрос, как я понимаю, не в том как реализовать нужное поведение, а есть ли похожая конструкция в Скале. В Скале такой конструкции нет, и что-то подобное сделать (как например с эликсировской стрелкой |>), относительно просто, возможности тоже нет. :)
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Aleksei Shashev
вопрос, как я понимаю, не в том как реализовать нужное поведение, а есть ли похожая конструкция в Скале. В Скале такой конструкции нет, и что-то подобное сделать (как например с эликсировской стрелкой |>), относительно просто, возможности тоже нет. :)
что за эликсировскся стрелка и что подобное с ней делают?
источник

Oℕ

Oleg ℕizhnik in Scala User Group
функции определять паттерн матчингом модно
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Aleksei Shashev
в терминах скалы это выглядило бы как-то так:

def foo(x: Int) = //что-то общее
def foo(1) = //что-то когда аргумент равен 1
def foo("qqq") = //что-то когад переадли строку
можно написать

val foo: Any => Unit = {
  case 1 =>
  case x: Int =>
  case "qqq" =>
}
источник

Oℕ

Oleg ℕizhnik in Scala User Group
можно и функции с большим числом параметров так объявить
источник

AS

Aleksei Shashev in Scala User Group
Oleg ℕizhnik
что за эликсировскся стрелка и что подобное с ней делают?
это из другой области, простов эликсире и вроде в F# есть встроенный бинарный оператор |>. Слева стоит какой-то объект, который будет передан как аргумент функции стоящий справа, т.е.:

foo(bar(baz(new_function(other_function(SomeThing)))))


можно переписать как

SomeThing |> other_function() |> new_function() |> baz() |> bar() |> foo()
источник

DS

D & S in Scala User Group
Очень удобная тема
источник

М

Михаил in Scala User Group
Aleksei Shashev
это из другой области, простов эликсире и вроде в F# есть встроенный бинарный оператор |>. Слева стоит какой-то объект, который будет передан как аргумент функции стоящий справа, т.е.:

foo(bar(baz(new_function(other_function(SomeThing)))))


можно переписать как

SomeThing |> other_function() |> new_function() |> baz() |> bar() |> foo()
источник

AS

Aleksei Shashev in Scala User Group
Oleg ℕizhnik
можно и функции с большим числом параметров так объявить
Да,  можно. В описании Эликсира и приводится похожий пример, что обычный патернматчинг внутри функции можно переписать в виде "перегрузки" функций. :)
источник

D

Dima Kubitskiy in Scala User Group
|> что-то типа andThen ?
источник

SZ

Stas Zemlyakov in Scala User Group
Dima Kubitskiy
|> что-то типа andThen ?
Похоже, это оно и есть.
источник

AS

Aleksei Shashev in Scala User Group
о! в 2.13 завезли :) и еще tap!
источник

AS

Aleksei Shashev in Scala User Group
Dima Kubitskiy
|> что-то типа andThen ?
да, только чуть проще читается, так как позволяет объект над которым будут произведены трансформации поместить вначало цепочки и дальше ты читаешь как он трансформируется. А в случае andThen вначале читаешь как будет что-то трансформироваться и потом в конце только узнаешь что именно :)
источник

SZ

Stas Zemlyakov in Scala User Group
Вот тут дядька пишет про function composition в F#, там такое |> используется: https://fsharpforfunandprofit.com/posts/function-composition/
источник

D

Dima Kubitskiy in Scala User Group
Aleksei Shashev
да, только чуть проще читается, так как позволяет объект над которым будут произведены трансформации поместить вначало цепочки и дальше ты читаешь как он трансформируется. А в случае andThen вначале читаешь как будет что-то трансформироваться и потом в конце только узнаешь что именно :)
интересная тема
источник