Expressions als Value-Matching in Records #354

Open
opened 2024-11-21 18:58:38 +00:00 by RubenKraft · 0 comments
Collaborator

Momentan ist es lediglich angedacht, explizite Literale zum Value-Matching zu verwenden.
Ein Beispiel wäre hierfür folgendes.

switch(x){
  case Rec("test") -> ...
  case Rec("test2") -> ...
}

Es wäre ebenfalls eine Überlegung Wert, die Möglichkeit zum Value-Matching auf Expressions auszuweiten. Bedingung wäre, dass die Expressions Literale zurückgeben.
Dann wäre folgendes möglich.

switch(x){
  case Rec(getIntRepresentation("1.000")) -> ...
  case Rec(1 + 5) -> ...
}

Nach Rücksprache hat @dholle folgende Probleme identifiziert:

Eine Unterscheidung zwischen Record und Methode wird nurnoch schwer möglich, da beispielsweise folgende Entscheidung getroffen werden muss.

case Rec(x) ->   //x kann jetzt ein Pattern sein oder eine Variable zum Value-Matching 

Mögliche Lösungsmöglichkeiten wäre, das Schlüsselwort var zu verwenden

case Rec(var x) ->  

oder die Bedingungen das nur dann Expressions verwendet werden dürfen, wenn diese eingeklammert sind.

case Rec((getIntRepresentation("1.000"))) ->   //der Methodenaufruf steht in Klammern
Momentan ist es lediglich angedacht, explizite Literale zum Value-Matching zu verwenden. Ein Beispiel wäre hierfür folgendes. ```java switch(x){ case Rec("test") -> ... case Rec("test2") -> ... } ``` Es wäre ebenfalls eine Überlegung Wert, die Möglichkeit zum Value-Matching auf Expressions auszuweiten. Bedingung wäre, dass die Expressions Literale zurückgeben. Dann wäre folgendes möglich. ```java switch(x){ case Rec(getIntRepresentation("1.000")) -> ... case Rec(1 + 5) -> ... } ``` Nach Rücksprache hat @dholle folgende Probleme identifiziert: Eine Unterscheidung zwischen Record und Methode wird nurnoch schwer möglich, da beispielsweise folgende Entscheidung getroffen werden muss. ```java case Rec(x) -> … //x kann jetzt ein Pattern sein oder eine Variable zum Value-Matching ``` Mögliche Lösungsmöglichkeiten wäre, das Schlüsselwort var zu verwenden ```java case Rec(var x) -> … ``` oder die Bedingungen das nur dann Expressions verwendet werden dürfen, wenn diese eingeklammert sind. ```java case Rec((getIntRepresentation("1.000"))) -> … //der Methodenaufruf steht in Klammern ```
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: JavaTX/JavaCompilerCore#354
No description provided.