switch and match - Squeng/Polyglot GitHub Wiki

Scala has a switch expression.

def tShirt(size: String) =
  val toolTip = size match 
    case "XS" | "S" => "(extra) small"
    case "M" => "medium"
    case "L" | "XL" => "(extra) large"
    case _ => "tbd"

  s"$size is $toolTip"

Java has a switch statement as well as a switch expression.


String tShirtStatement(String size)  {
  String toolTip = null;
  switch(size) {
    case "XS": case "S":
      toolTip = "(extra) small";
      break;
    case "M":
      toolTip = "medium";
      break;
    case "L": case "XL":
      toolTip = "(extra) large";
      break;
    default:
      toolTip = "tbd";
      break;
  }
  return size + " is " + toolTip;
} 
  
String tShirtExpression(String size)  {
  var toolTip = switch(size) {
    case "XS", "S" -> "(extra) small";
    case "M" -> "medium";
    case "L", "XL" -> "(extra) large";
    default -> "tbd";
  };
  return size + " is " + toolTip;
} 

Python has a match statement.

def tShirt(size):
    toolTip = None
    match size:
        case 'XS' | 'S':
            toolTip = '(extra) small'
        case 'M':
            toolTip = 'medium'
        case 'L' | 'XL':
            toolTip = '(extra) large'
        case _:
            toolTip = 'tbd'
    return f"{size} is {toolTip}"