Size: a a a

Scala User Group

2020 November 28

GP

Grigory Pomadchin in Scala User Group
да
источник

Oℕ

Oleg ℕizhnik in Scala User Group
в общем, стоит почитать доки либы
источник

SA

Sergey Alaev in Scala User Group
Oleg ℕizhnik
в общем, стоит почитать доки либы
Пролистал, с ходу не нашел. Ну ок, пролистаю еще раз)
источник

GP

Grigory Pomadchin in Scala User Group
Sergey Alaev
Пролистал, с ходу не нашел. Ну ок, пролистаю еще раз)
источник

GP

Grigory Pomadchin in Scala User Group
там прям твой вопрос + след секция generating case classes
источник

GP

Grigory Pomadchin in Scala User Group
Пойдёт для старта?
источник

SA

Sergey Alaev in Scala User Group
Grigory Pomadchin
Пойдёт для старта?
Не-а, мне же не случайные инстансы нужны, а объединение множеств вариантов для каждого поля класса
источник

SA

Sergey Alaev in Scala User Group
В моем примере - должно получиться 3 теста
источник

SA

Sergey Alaev in Scala User Group
И другой вопрос - это как-то скрещивается с кодом на эффектах?
источник

GP

Grigory Pomadchin in Scala User Group
Sergey Alaev
И другой вопрос - это как-то скрещивается с кодом на эффектах?
источник

SA

Sergey Alaev in Scala User Group
Спасибо, но кол-во звезд удручает. Вы этим пользуетесь?
источник

GP

Grigory Pomadchin in Scala User Group
Sergey Alaev
Спасибо, но кол-во звезд удручает. Вы этим пользуетесь?
я законы пропертями проверяю; этим не пользовался кроме как для примера; да глянь на край либу не сложное своё сделать если хочешь
источник

GP

Grigory Pomadchin in Scala User Group
А так пилквист использует это в комкасте
источник

SA

Sergey Alaev in Scala User Group
В итоге запилил своё, с детерминированным поведением и тестированием граничных случаев
источник
2020 November 29

G

Glin in Scala User Group
как я могу проверить является ли объект одним из типов? например есть класс инстанс entityType объекта EntityType, я хочу проверить является ли он WALL или HOUSE. городить ифы/матч это имхо странный вариант
объявлено это всё так:

sealed abstract class EntityType (val tag: Int) {
   def writeTo(stream: java.io.OutputStream) {
       StreamUtil.writeInt(stream, tag)
   }
}

object EntityType {
   case object WALL extends EntityType(0)
   case object HOUSE extends EntityType(1)
   def readFrom(stream: java.io.InputStream): EntityType = StreamUtil.readInt(stream) match {
       case 0 => WALL
       case 1 => HOUSE
       case _ => throw new java.io.IOException("Unexpected tag value")
   }
источник

AS

Aλexander Semenov in Scala User Group
Glin
как я могу проверить является ли объект одним из типов? например есть класс инстанс entityType объекта EntityType, я хочу проверить является ли он WALL или HOUSE. городить ифы/матч это имхо странный вариант
объявлено это всё так:

sealed abstract class EntityType (val tag: Int) {
   def writeTo(stream: java.io.OutputStream) {
       StreamUtil.writeInt(stream, tag)
   }
}

object EntityType {
   case object WALL extends EntityType(0)
   case object HOUSE extends EntityType(1)
   def readFrom(stream: java.io.InputStream): EntityType = StreamUtil.readInt(stream) match {
       case 0 => WALL
       case 1 => HOUSE
       case _ => throw new java.io.IOException("Unexpected tag value")
   }
Объявить на нём fold с match один раз.
источник

Oℕ

Oleg ℕizhnik in Scala User Group
Glin
как я могу проверить является ли объект одним из типов? например есть класс инстанс entityType объекта EntityType, я хочу проверить является ли он WALL или HOUSE. городить ифы/матч это имхо странный вариант
объявлено это всё так:

sealed abstract class EntityType (val tag: Int) {
   def writeTo(stream: java.io.OutputStream) {
       StreamUtil.writeInt(stream, tag)
   }
}

object EntityType {
   case object WALL extends EntityType(0)
   case object HOUSE extends EntityType(1)
   def readFrom(stream: java.io.InputStream): EntityType = StreamUtil.readInt(stream) match {
       case 0 => WALL
       case 1 => HOUSE
       case _ => throw new java.io.IOException("Unexpected tag value")
   }
так как вы пользуетесь case object, вы так и можете писать в патерн-матчинге

{
 case Wall =>
 case House =>

обращаю внимание, что именование с заглавной буквы, а не полностью апперкейс является в scala принятым.


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

https://github.com/lloydmeta/enumeratum#valueenum
источник

В

Влад in Scala User Group
Aλexander Semenov
Объявить на нём fold с match один раз.
А можно подробнее про этот путь? Не понимаю, как fold  относится к такой задаче.
источник

AS

Aλexander Semenov in Scala User Group
Влад
А можно подробнее про этот путь? Не понимаю, как fold  относится к такой задаче.
def fold[A](onWall: => A, onHouse: => A): A =
 this match {
   case Wall => onWall
   case House => onHouse
 }
источник

В

Влад in Scala User Group
Oleg ℕizhnik
так как вы пользуетесь case object, вы так и можете писать в патерн-матчинге

{
 case Wall =>
 case House =>

обращаю внимание, что именование с заглавной буквы, а не полностью апперкейс является в scala принятым.


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

https://github.com/lloydmeta/enumeratum#valueenum
Там же match идёт по Int-у, разве match по case object-ам имеет к этому отношение? (без enumeratum если делать)
источник