Gentoo1337,
@Gentoo1337@sh.itjust.works avatar

I understand the syntax but i dont get the joke.

Omega_Haxors,

<T> is something which is completely unhinged out of context, and sometimes even in context.

Knusper,

In this thread: Trying to guess the programming language based on a single keyword and angle brackets. 🙃

kogasa,
@kogasa@programming.dev avatar

True, but that’s definitely C#

UFODivebomb, (edited )

In Scala:


<span style="color:#323232;">case class Fix[F[_]](unfix: F[Fix[F]])
</span><span style="color:#323232;">case class Pie[T](filling: T)
</span><span style="color:#323232;">def ohNo: Fix[Pie] = Fix(Pie(ohNo))
</span>
Knusper,

Type erasure sure does go brr…

PetDinosaurs,

Which language are we talking here? Cpp? Because typeof hasn’t ever seemed useful to me in how I use cpp or how I have ever really used a language. I also remember it being criticized in java class more than 20 years ago when OOP was solely preached, even for scientific people like me.

S0UPernova,

TypeScript?

Mozingo,
@Mozingo@lemmy.world avatar

This sure looks like C#. I use typeof every once in a while when I want to check that the type of a reference is a specific type and not a parent or derived type. But yea, really not that often.

PetDinosaurs,

It looks exactly like c++ and c# and java and probably others.

morhp,

Java only has instanceof and getClass, not typeof.

Mozingo,
@Mozingo@lemmy.world avatar

But neither c++ or Java have typeof

257m,

deleted_by_author

  • Loading...
  • sgh,

    Standard C does not have typeof. That’s just a compiler extension…

    Also the equivalent of typeof is most likely decltype or auto.

    LapidistCubed,

    Probably because Java and C# take much inspiration from C++. They aren’t called “C-based” languages for nothing 😉

    FooBarrington,

    Typescript! Though it’s less useful, since the Typescript types aren’t available at runtime, so you’ll just get object for non-primitive values.

    m_r_butts, (edited )

    deleted_by_author

  • Loading...
  • tonur,

    I have used typeof(T) inside the generic class, so fx a function inside the class Pie where T can be refered. But out of context, if you were to call typeof(T) inside Program.cs’s main function, it would not work.

    kogasa,
    @kogasa@programming.dev avatar

    I don’t get what you mean. You can define class Pie and instantiate it with the type argument Pie.

    Huh, maybe I don’t get it because Lemmy is literally erasing angle brackets from our messages. Not just “not rendering.” It’s removing them entirely. There should be four angle brackets in the first line of this comment…

    m_r_butts,

    deleted_by_author

  • Loading...
  • _Z1useri,

    Hm, I’m currently working on a project with a ton of runtime-configurable plug-ins and dependencies between them. All of that is held together with a copious amount of black QMetaObject magic. I had the same thought about it, but I’m not sure how you’d get similar functionality without reflection and not making it even more convoluted and fragile…

    xmunk,

    Metaprogramming is extremely useful for long term code readability. What you’re doing is probably fine but we can’t really evaluate that without seeing the actual code.

    kogasa,
    @kogasa@programming.dev avatar

    That’s why I stopped writing code and started writing ASTs and AST transformers that can be configured to emit libraries.

    mordack550,

    Your assumption that “using reflection means the code is wrong” seems a bit extreme, at least in .Net. Every time you interact with types, you use reflection. Xml and Json serialization/deserialization uses reflection, and also Entity Framework. If you use mocking in test you are using reflection.

    We have an excel export functionality on our sites that uses reflection because we can write 1 function and export any types we want, thanks to reflection.

    m_r_butts,

    deleted_by_author

  • Loading...
  • sxan,
    @sxan@midwest.social avatar

    A good sense of “code smell” is one of the most valuable programming skills. I think your “probably” is justified: if you’re doing X, you should look twice at how you’re doing it. Maybe it’s right, but usually it’s not, so it’s worth a pause and a thought.

    dzervas,

    huh, you’re right! I’m trained on a different kind of code. In C# in particular, which I use mostly to do sneaky stuff (patch/inject runtime code to, um, “fix” it) and when I see a project that it’s too clean it smells

    I also see python code (I code regular stuff in it) that could be written much more cleanly using monkey-patching

    kogasa,
    @kogasa@programming.dev avatar

    Modern .NET is reducing dependence on reflection. System.Text.JSON and other core libraries have leveraged source generation to produce AOT + trim friendly, reflection free code. But yeah, it’s not a taboo like say dynamic, it’s perfectly normal to use reflection in idiomatic C# code.

    gens,

    It’s very useful in zig’s comptime.

    Konlanx,

    This is likely referring to TypeScript.

    TypeScript has all of these patterns, they are used very frequently and they are necessary because TypeScript tends to be interesting from time to time since its types only exist at compile time, because it compiles to JavaScript, which is a language without types.

    TypeScript also allows any as a keyword, which says “I don’t know which type this is and I don’t care”, which still produces valid JavaScript. To get back to typed variables it is necessary to use typeof (or similar constructs like a type guard).

    www.typescriptlang.org/docs/…/typeof-types.html

    jana, (edited )

    But generic type syntax is a feature exclusive to Typescript while typeof is a JavaScript thing. You’d never get Pie[Pie[T]] as a result from a typeof check. (Please excuse the square brackets; seems like the markdown parser here isn’t quite right and it keeps messing up the angle brackets)

    Also, it’s typeof foo not typeof(foo) in js

  • All
  • Subscribed
  • Moderated
  • Favorites
  • programmerhumor@lemmy.ml
  • ngwrru68w68
  • rosin
  • GTA5RPClips
  • osvaldo12
  • love
  • Youngstown
  • slotface
  • khanakhh
  • everett
  • kavyap
  • mdbf
  • DreamBathrooms
  • thenastyranch
  • magazineikmin
  • megavids
  • InstantRegret
  • normalnudes
  • tacticalgear
  • cubers
  • ethstaker
  • modclub
  • cisconetworking
  • Durango
  • anitta
  • Leos
  • tester
  • provamag3
  • JUstTest
  • All magazines