this post was submitted on 11 Dec 2023
29 points (78.4% liked)

JavaScript

1982 readers
1 users here now

founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] JakenVeina@lemm.ee 8 points 11 months ago (2 children)

Until JS supports switch expressions, nested ternaries will continue to be the most effective way to write multi-state conditionals.

Also, stop using linting tools that prioritize consistency over human readability, and then complaining that the code they generate is not easily-readable by humans.

[–] CameronDev@programming.dev 5 points 11 months ago (2 children)
[–] spartanatreyu@programming.dev 10 points 11 months ago (3 children)

Pretty sure they meant match as in pattern matching, not switch as in switch/case/break.

You can see the proposal here: https://github.com/tc39/proposal-pattern-matching

[–] CameronDev@programming.dev 3 points 11 months ago

Your probably right, that looks quite desirable.

[–] JakenVeina@lemm.ee 1 points 11 months ago* (last edited 11 months ago) (1 children)

Nah, I meant switch, as that's what it's called in C#-land. See above.

That proposal for matching looks interesting, but not quite the same, no.

[–] spartanatreyu@programming.dev 5 points 11 months ago* (last edited 11 months ago) (1 children)

Are you sure?

Your C# example:

var output = input switch
{
    null    => "Null",
    0       => "Zero",
    > 0     => "Positive",
    _       => "Negative"
};

JS proposal for match:

const output = match input {
    when null:    "Null";
    when 0:       "Zero";
    if input > 0: "Positive";
    default:      "Negative";
}
[–] JakenVeina@lemm.ee 1 points 11 months ago

Aha, yeah, I see it now. Looking forward to it.

[–] snowe@programming.dev 1 points 11 months ago (1 children)

they also said switch expressions, which indicates they want the switch statement to be settable directly to a variable with whatever the return type of the switch is.

[–] spartanatreyu@programming.dev 2 points 11 months ago

Match already returns the value which can be thrown into a variable.

[–] JakenVeina@lemm.ee 2 points 11 months ago* (last edited 11 months ago)

Yeah, a switch expression is different than a switch statement. I'm not actually sure how many languages actually have them, but in C# its...

var output = input switch
{
    null    => "Null",
    0       => "Zero",
    > 0     => "Positive",
    _       => "Negative"
};