Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • 05:22

    SethTisue on 2.12.x

    sbt 1.6.0-RC1 (was 1.6.0-M1) (#… (compare)

  • 05:22
    SethTisue closed #1509
  • 01:32
    SethTisue edited #1510
  • 01:32
    SethTisue synchronize #1510
  • 00:19

    SethTisue on main

    update CoC points-of-contact (#… (compare)

  • 00:19
    SethTisue closed #1307
  • 00:16
    SethTisue opened #1307
  • Nov 29 20:52
    SethTisue synchronize #2241
  • Nov 29 20:22
    SethTisue commented #2241
  • Nov 29 20:20
    SethTisue review_requested #2241
  • Nov 29 20:20
    SethTisue synchronize #2241
  • Nov 29 20:18
    SethTisue synchronize #2241
  • Nov 29 20:17
    SethTisue opened #2241
  • Nov 29 20:03
    SethTisue edited #1509
  • Nov 29 20:01
    SethTisue edited #1510
  • Nov 29 19:55
    SethTisue synchronize #9763
  • Nov 29 19:55
    SethTisue assigned #9763
  • Nov 29 19:53
    SethTisue edited #9763
  • Nov 29 19:53
    scala-jenkins milestoned #9763
  • Nov 29 19:53
    SethTisue reopened #9763
Daniel Gordon
@DanielGGordon
Is there like a list of which methods are generated from case class? Like I know generally speaking getters, setters, apply, unapply, hashcode and toEquals.
Gavin Bisesi
@Daenyth
Setters?
Daniel Gordon
@DanielGGordon
yeah maybe that doesn't make sense
Gavin Bisesi
@Daenyth
yeah
It doesn't so much define getters either, just that the constructor items are public instead of private by default
Ryan Peters
@sloshy
copy lets you do an immutable shallow copy of one case class instance to another so that might be what you are thinking.
Gavin Bisesi
@Daenyth
It gives you equals, hashcode, copy, Product with Serializable, apply, and unapply
Daniel Gordon
@DanielGGordon
I was thinking about the constructor I think
Ryan Peters
@sloshy
i.e. myCaseClass.copy(name = "newName")
Case classes are best whenever you just have "some data with a shape to it", and if you need more control over how that works a class can work better. Usually (95% of the time) I go with case classes because they're so convenient.
Daniel Gordon
@DanielGGordon

Found a summary that said:

apply
unapply
accessor methods are created for each constructor parameter
copy
equals and hashCode
toString

Ryan Peters
@sloshy
I wouldn't know anything about efficiency. I don't think it's an issue until it's an issue for you. Profile and whatnot if you have to.
Daniel Gordon
@DanielGGordon
So in terms of the performance - is it really just a memory overhead? There isn't actually a runtime difference just because the class has more methods?
Ryan Peters
@sloshy
Also while we're here - make all your case classes/objects final. Inheritance with those is kind of wonky sometimes
Daniel Gordon
@DanielGGordon
final means you can't extend it right?
Ryan Peters
@sloshy
yes
They can extend other things like traits - just not each other, I wouldn't recommend it
Martijn Hoekstra
@martijnhoekstra
an instance of a case class probably isn't going to be bigger than one of a "regular" class
at least, I don't know why it should be
AFAIK the state on automatic final of case classes still is that Martin has some use case for extending case classes in the compiler. I wonder if that's still the case for scala 3
Daniel Gordon
@DanielGGordon
Well @martijnhoekstra for example if I just make a class, there are methods you get when you use the case keyword, so isn't it guaranteed you will have a larger memory footprint for the case class? What I'm not sure about, is if this actually translates to each instance of the class having a large footprint or not.
Martijn Hoekstra
@martijnhoekstra
I believe that you will get a bigger memory footprint for the class itself only, which means once per class, not once per instance of a class
I never worried about this before, so I'm not entirely sure
Daniel Gordon
@DanielGGordon
ok in that case it's negligible
Rob Norris
@tpolecat
Instance size is a constant + memory required for fields
methods don't have a per-instance cost
Soren
@srnb_gitlab
I wrote almost 400 lines of my first C++ code ever in the past two days
And oh boy has it made me really appreciate having cats/fs2
What Even Is A Mutex?:tm:
Rob Norris
@tpolecat
Ironically we don't have an answer to that. I need a re-entrant mutex that understands fibers and it's impossible to write one at the moment.
Robert D. Blanchet Jr.
@blanchet4forte
Anyone here use reactive mongo? I'm using it with play and play.json and I'm trying to insert a document but its complaining that it can't find the implicit Json Format for the object I'm trying to insert even though its declared in its companion object that is getting imported
Error:(63, 15) No Json serializer as JsObject found for type co.firstfoundry.lagom.scaladsl.api.mongo.OffsetDocument. Try to implement an implicit OWrites or OFormat for this type. .one(offsetDocument)) Error:(63, 15) not enough arguments for method one: (implicit ec: scala.concurrent.ExecutionContext, implicit writer: play.api.libs.json.OWrites[co.firstfoundry.lagom.scaladsl.api.mongo.OffsetDocument])scala.concurrent.Future[reactivemongo.api.commands.WriteResult]. Unspecified value parameter writer. .one(offsetDocument))
Robert D. Blanchet Jr.
@blanchet4forte
figured it out.. my implicit was Format but if I change it to OFormat it finds it.
Ichoran
@Ichoran
@srnb_gitlab - Why do you need to write C++ instead of Rust?
And anyway, Java has mutexes also under ever-so-friendly names like ConcurrentReadWriteLock.
Rob Norris
@tpolecat
Need the equivalent for when there are no threads.
Gavin Bisesi
@Daenyth
TIL json number is a Double and will happily round even integral Long values :trollface:
nafg
@nafg
@Daenyth in what context?
Rob Norris
@tpolecat
yes, the 52-bit integers we have all been asking for
Gavin Bisesi
@Daenyth
@nafg in the context of json parsing
Rob Norris
@tpolecat
> 9223372036854775807
9223372036854776000
close enough eh
Gavin Bisesi
@Daenyth
@tpolecat is that the cutoff? Thanks, we want to see how many of our apis ship ids that get broken this way
Rob Norris
@tpolecat
Yeah it's IEEE 754 floating point so you get 52 bits of mantissa and 12 bits of exponent. At least in Javascript. I don't know if JSON itself specifies it.
Martijn Hoekstra
@martijnhoekstra
Json specifies arbitrary precision
Rob Norris
@tpolecat
Ok.
nafg
@nafg
@Daenyth parsing it with what?
Gavin Bisesi
@Daenyth
JSON.parse
Martijn Hoekstra
@martijnhoekstra
But stresses that if you want to be interoperable, you probably need to do IEEE or you'll probably have a bad time