Перейти к публикации
  • Сейчас на странице   Всего пользователей: 0   (0 пользователей, 0 гостей)

Rooster

Программирование, т. 8

  

315 пользователей проголосовало

У вас нет прав на голосование в этом опросе, или на просмотр результатов опроса. Пожалуйста, войдите или зарегистрируйтесь для голосования в опросе.

Рекомендованные сообщения

Делаю домаху по С++, чё за srand. Поясните

 

Вижу, что делаешь честно, практически без подглядываний в интернет (пд не в счет офк). Респект! 

`KV, Kant, Drakonian и 6 другим понравилось это

Поделиться сообщением


Ссылка на сообщение

господа скалоебы

поясните за Опшн, Трай и Ейзер

 

1) чтение из файла => должно вернуть Try с описанием Failure и Success?

2) селект в БД => вернуть Опшн?

3) а ейзер когда юзать? Ейзер матч кейсить же нельзя? А если я хочу, что типа right пустой или его там нет, потому что left с ошибкой то шо тогда?


:buba:

ни мало ни много, а много и мало

Поделиться сообщением


Ссылка на сообщение

Если что опшн = option, ейзер = either

Я секунд 30 разгадывал

Rooster понравилось это

65881.png

Поделиться сообщением


Ссылка на сообщение

1 и 2 не совсем понял, как опишешь методы так и будут работать.

Either юзаешь когда у тебя метод возвращает либо один либо другой тип, например у нас есть метод, который возвращает либо дженерик хттп респонз, либо наш кастомный и если кастомный, то мы его просто ложим в базу, а если дженерик то сначала обрабатываем, а потом ложим

и он прекрасно матчится

https://scalafiddle.io/sf/7qPVQYt/0

Поделиться сообщением


Ссылка на сообщение

Option[T], use it when a value can be absent or some validation can fail and you don’t care about the exact cause. Typically in data retrieval and validation logic.
Either[L,R], similar use case as Option but when you do need to provide some information about the error.
Try[T], use when something Exceptional can happen that you cannot handle in the function. This, in general, excludes validation logic and data retrieval failures but can be used to report unexpected failures.

ну как по мне чтение из файла и ошибка чтения (например что файла нет etc) это в Try должно быть с onSuccess/onFailure

а просто вычисление чего-либо откуда там трай (ну максимум деление на ноль например но тут я как понял лучше either)? => юзаем Option


:buba:

ни мало ни много, а много и мало

Поделиться сообщением


Ссылка на сообщение

не совсем выкупил как это вяжется с твоим предыдущим постом, при чем тут чтение из файлов, которое обязано вернуть трай (чтение из стандартной библиотеки никакой трай не возвращает) или чтение из базы, которое должно вернуть option (тот же слик никакой option по дефолту не возвращает, а future)

ну и either можно много для чего испольовать, не только в случаях когда у тебя одно из значений это эррор (к примеру имплементация какого-то кастомного дерева)

Поделиться сообщением


Ссылка на сообщение
(изменено)
Option[T], use it when a value can be absent or some validation can fail and you don’t care about the exact cause. Typically in data retrieval and validation logic.
Either[L,R], similar use case as Option but when you do need to provide some information about the error.
Try[T], use when something Exceptional can happen that you cannot handle in the function. This, in general, excludes validation logic and data retrieval failures but can be used to report unexpected failures.

ну как по мне чтение из файла и ошибка чтения (например что файла нет etc) это в Try должно быть с onSuccess/onFailure

а просто вычисление чего-либо откуда там трай (ну максимум деление на ноль например но тут я как понял лучше either)? => юзаем Option

 

бля

кароче 

абстракция try дает тебе на выходе "failure/success"

абстракция option дает на выходе "есть результат/нет результата"

абстракция either дает на выходе "есть либо А либо Б" 

 

если в конктексте возвращаемой ошибки - если тебе нужно чейнить successы и обрабатывать фейлы - пишешь через трай,

если тебе главное "удалось получить нужный результат или нет" тогда option

если тебе нужно отличать разные варианты ответов, в т.ч. например "ошибка как ответ" - то изер

 

 

вообще ты вполне можешь написать

Try[Either[Option[Result], ErrorResponse]]

 

где сакцесс трая будет про то что никаких левых эксепшнов не вылезло и что был получен штатный ответ от чего-то (сервис, бд, файловая система), ответ же может содержать либо ошибку, либо результат запроса, который может оказаться None (не найдено)


Изменено пользователем Just.Doit
choojoykin понравилось это

 

очень крутые котейки

RqvSzvr.png


Кому-то пизды дал - нужно сделать скрин обязательно. (с) Solo

Поделиться сообщением


Ссылка на сообщение

 

Option[T], use it when a value can be absent or some validation can fail and you don’t care about the exact cause. Typically in data retrieval and validation logic.
Either[L,R], similar use case as Option but when you do need to provide some information about the error.
Try[T], use when something Exceptional can happen that you cannot handle in the function. This, in general, excludes validation logic and data retrieval failures but can be used to report unexpected failures.

ну как по мне чтение из файла и ошибка чтения (например что файла нет etc) это в Try должно быть с onSuccess/onFailure

а просто вычисление чего-либо откуда там трай (ну максимум деление на ноль например но тут я как понял лучше either)? => юзаем Option

 

бля

кароче 

абстракция try дает тебе на выходе "failure/success"

абстракция option дает на выходе "есть результат/нет результата"

абстракция either дает на выходе "есть либо А либо Б" 

 

если в конктексте возвращаемой ошибки - если тебе нужно чейнить successы и обрабатывать фейлы - пишешь через трай,

если тебе главное "удалось получить нужный результат или нет" тогда option

если тебе нужно отличать разные варианты ответов, в т.ч. например "ошибка как ответ" - то изер

 

 

вообще ты вполне можешь написать

Try[Either[Option[Result], ErrorResponse]]

 

где сакцесс трая будет про то что никаких левых эксепшнов не вылезло и что был получен штатный ответ от чего-то (сервис, бд, файловая система), ответ же может содержать либо ошибку, либо результат запроса, который может оказаться None (не найдено)

 

сенкс


:buba:

ни мало ни много, а много и мало

Поделиться сообщением


Ссылка на сообщение
Гость LifeIsPain

Котейка не понимает, что если не зарефакторить сейчас, а добавить новые фичи в текущую систему

потом переделка этих фичей займет в 10 раз больше времени

Поделиться сообщением


Ссылка на сообщение

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

Поделиться сообщением


Ссылка на сообщение

Нет

пидора ответ


:buba:

ни мало ни много, а много и мало

Поделиться сообщением


Ссылка на сообщение

пидора ответ


Russia.png.ea080e101222d708d08842dae4ccc684.png USA.png.9b863586cd992fb91bf92ed1de03e4cc.png Israel.png.f27d10a4455f05cd161a8c2c52b8b5e1.png

Поделиться сообщением


Ссылка на сообщение
(изменено)

Котейка не понимает, что если не зарефакторить сейчас, а добавить новые фичи в текущую систему

потом переделка этих фичей займет в 10 раз больше времени

смотря где разработка

бизнесу строго похуй, потому что фича должна была быть вчера

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

 

но опять же мы тут уже говорили что 

хуевый кодер - хуево закодит

хороший кодер - хорошо закодит гавнокод так, что хуевый даже не поймет что это гавнокод


Изменено пользователем choojoykin
Kant понравилось это

:buba:

ни мало ни много, а много и мало

Поделиться сообщением


Ссылка на сообщение

Ну а тестер все равно нихуя не поймет поэтому похуй

Kant и FFka понравилось это

Russia.png.ea080e101222d708d08842dae4ccc684.png USA.png.9b863586cd992fb91bf92ed1de03e4cc.png Israel.png.f27d10a4455f05cd161a8c2c52b8b5e1.png

Поделиться сообщением


Ссылка на сообщение

Ну а тестер все равно нихуя не поймет поэтому похуй

:cry:  :cry:  :cry:

ну и пидор же ты


:buba:

ни мало ни много, а много и мало

Поделиться сообщением


Ссылка на сообщение

Я не про тебя, я про дауна @@Zellar

fessnik понравилось это

Russia.png.ea080e101222d708d08842dae4ccc684.png USA.png.9b863586cd992fb91bf92ed1de03e4cc.png Israel.png.f27d10a4455f05cd161a8c2c52b8b5e1.png

Поделиться сообщением


Ссылка на сообщение

Котейка не понимает, что если не зарефакторить сейчас, а добавить новые фичи в текущую систему

потом переделка этих фичей займет в 10 раз больше времени

вообще я просто рофлянул с "почему у тебя тимлидом кота поставили"


 

очень крутые котейки

RqvSzvr.png


Кому-то пизды дал - нужно сделать скрин обязательно. (с) Solo

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...