Size: a a a

Scala User Group

2020 November 06

К

Кемель in Scala User Group
Alex Sh
Можно закинуть пример кода с необходимостью принудительного выхода в скасти.
Тогда кто-нть тут посмотрит и возможно предложит альтернативное решение.
Хорошо. Спасибо
источник

D

Daniel in Scala User Group
Sergey Alaev
Можно и нужно, если return упрощает код - используйте return. Не стоит его использовать внутри лямбд
ну ето бан
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Кемель
Здравствуйте. Решая задачи, столкнулся с такой ситуации, что в Скале оператор return работает иначе, и в статьях указывается, что его лучше не использовать. Как Вы поступаете в таком случае, при решении задачи, когда Вам надо принудительно выйти из метода, тем самым уменьшая время работы?
Необходимость  использовать return автоматически пропадает после определённой практики scala.
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Как правило, формы ветвления - условные выражения и паттерн матчи полностью искореняют потребность в ранних return даже в методах использующих низкоуровневую мутабельность
источник

λ

λoλcat in Scala User Group
Можно запретить ретурн линтерами
источник

SA

Sergey Alaev in Scala User Group
Daniel
ну ето бан
Вот пример из стандартной библиотеки Scala:
  def sizeCompare(otherSize: Int): Int = {
   if (otherSize < 0) 1
   else {
     val known = knownSize
     if (known >= 0) Integer.compare(known, otherSize)
     else {
       var i = 0
       val it = iterator
       while (it.hasNext) {
         if (i == otherSize) return 1
         it.next()
         i += 1
       }
       i - otherSize
     }
   }
 }


Главное - без фанатизма.
источник

D

Daniel in Scala User Group
λoλcat
Можно запретить ретурн линтерами
+
источник

D

Daniel in Scala User Group
Sergey Alaev
Вот пример из стандартной библиотеки Scala:
  def sizeCompare(otherSize: Int): Int = {
   if (otherSize < 0) 1
   else {
     val known = knownSize
     if (known >= 0) Integer.compare(known, otherSize)
     else {
       var i = 0
       val it = iterator
       while (it.hasNext) {
         if (i == otherSize) return 1
         it.next()
         i += 1
       }
       i - otherSize
     }
   }
 }


Главное - без фанатизма.
вы сами гарантия себе, как говорится
источник

SA

Sergey Alaev in Scala User Group
Daniel
вы сами гарантия себе, как говорится
как говорится, нечего сказать - переходи на личности
источник

λ

λoλegΥch in Scala User Group
это бан
источник

NV

Nikita Vilunov in Scala User Group
Sergey Alaev
Вот пример из стандартной библиотеки Scala:
  def sizeCompare(otherSize: Int): Int = {
   if (otherSize < 0) 1
   else {
     val known = knownSize
     if (known >= 0) Integer.compare(known, otherSize)
     else {
       var i = 0
       val it = iterator
       while (it.hasNext) {
         if (i == otherSize) return 1
         it.next()
         i += 1
       }
       i - otherSize
     }
   }
 }


Главное - без фанатизма.
Стдлиба — не гарант качества. Ретурнов стоит избегать хотя бы потому что сегодня код с ними такой, а завтра он уже ретурнит из лямбды
источник

SA

Sergey Alaev in Scala User Group
Nikita Vilunov
Стдлиба — не гарант качества. Ретурнов стоит избегать хотя бы потому что сегодня код с ними такой, а завтра он уже ретурнит из лямбды
Да, и новички злоупотребляют ретурнами, это тоже правда. Но, с другой стороны, ретурны позволяют уменьшить уровень вложенности в функции и просто быстрее для таких алгоритмов, когда нужно что-то найти и выйти.
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
Sergey Alaev
Да, и новички злоупотребляют ретурнами, это тоже правда. Но, с другой стороны, ретурны позволяют уменьшить уровень вложенности в функции и просто быстрее для таких алгоритмов, когда нужно что-то найти и выйти.
это единичные и узкоспециализированные случаи. Не стоит из-за них одних давать новичкам «общие» советы
источник

TT

Taika Tytto in Scala User Group
Странно, я новичок, Скала для меня вообще первый фп язык, но пока ни разу не приходилось писать ретурн. Даже как-то естественно получается обходиться без.

Но я начинал с курсов Одерского, может они мне что-то зашили в голову, не знаю.
источник

ΛВ

Λнтон Войцишевский... in Scala User Group
Taika Tytto
Странно, я новичок, Скала для меня вообще первый фп язык, но пока ни разу не приходилось писать ретурн. Даже как-то естественно получается обходиться без.

Но я начинал с курсов Одерского, может они мне что-то зашили в голову, не знаю.
я больше года пишу на скале по работе и ни разу не писал ретурн.
источник

NV

Nikita Vilunov in Scala User Group
Надеюсь Сергей не будет и вас токсиками называть после таких советов
источник

SA

Sergey Alaev in Scala User Group
Nikita Vilunov
Надеюсь Сергей не будет и вас токсиками называть после таких советов
Люди делятся своим опытом и это замечательно, не нужно лепить из меня кого-то там.
источник

λ

λoλegΥch in Scala User Group
если нужен вам ретурн - смело тыркайте его поглубже, ведь одерский не заметит, а на всех других насрать
источник

SA

Sergey Alaev in Scala User Group
Вот еще один пример
  def indexWhere(f: A => Boolean, from: Int = 0): Int = {
   var i = from
   while(i < xs.length) {
     if(f(xs(i))) return i
     i += 1
   }
   -1
 }


В своё время эта "двуличность" заставила меня забросить скалу - я никак не мог понять, почему в книжках и статьях пишут одно, а в коде рантайма, который должен быть образцом стиля, - другое.
источник

KS

Kirill Shelopugin in Scala User Group
Интересно, откуда предположение, что код рантайма должен быть образцом стиля
источник