Groups | Search | Server Info | Keyboard shortcuts | Login | Register


Groups > de.comp.lang.java > #13390

Re: guter Stil void oder boolean

From Patrick Roemer <sangamon@netcologne.de>
Newsgroups de.comp.lang.java
Subject Re: guter Stil void oder boolean
Date 2022-07-11 13:26 +0200
Organization news.netcologne.de
Message-ID <tah1do$c4r$1@newsreader4.netcologne.de> (permalink)
References <1a3b5a2f-84da-4710-978b-c953f1262955n@googlegroups.com> <void-20220709224802@ram.dialup.fu-berlin.de> <void-20220710074558@ram.dialup.fu-berlin.de>

Show all headers | View raw


Responding to Stefan Ram:
> ram@zedat.fu-berlin.de (Stefan Ram) writes:
>>Dabei ist eine Bedeutung des englischen Adjektivs "void"
>>laut einem allgemeinen Englisch-Wörterbuch: "Not occupied;
>>unfilled", das Substantiv "void" bedeutet auch: "An open
>>space; a gap. - das wäre ja genau die richtige Bedeutung!
>>Also eher "void".
> 
>    Dazu paßt auch, daß »void« kein Typ ist, sondern ein
>    Schlüsselwort, das eine Alternative zur Angabe eines
>    Typs darstellt:
> 
> |Result:
> |  UnannType
> |  void
> JLS 8.4.5

Dass "void" in Java nur ein Pseudotyp ist (eine void-Methode gibt _gar 
nichts_ zurück, hat also keinen Rückgabetyp), ist eine von C geerbte 
Eigenheit. In anderen Sprachen wird dasselbe Konzept z.B. durch einen 
echten Typ "Unit" ausgedrückt, der genau einen Wert "()" besitzt - und 
damit natürlich genau gar keine Bedeutung trägt.

Ich finde es recht erstaunlich, dass die JLS keine tragfähige Definition 
für "void" beinhaltet (vielleicht habe ich heute auch nur ganz 
schlechtes Suchkarma), aber ich bin mir sehr sicher, dass die Semantik 
"diese Methode hat nur Nebeneffekte" ist, und nicht "diese Methode weiss 
noch nicht so recht, was sie zurückgeben will".

Eine etwas bessere (aber längst nicht passende) Annäherung an diese 
Bedeutung wäre der Typ "Nothing" in Scala, der keinen Wert beinhaltet, 
der aber ein Subtyp jedes anderen Typs ist. Im Zusammenspiel mit 
Inferenz für Methodenrückgabetypen könnte man da eine Methode so 
"evolvieren":

// inferred return type: Nothing
def foo(i: Int) =
   ??? // throws NotImplemented, type: Nothing

// inferred return type: Int
def foo(i: Int) =
   if(i >= 0)
     then i
     else ???

// inferred return type: Int
def foo(i: Int) =
   if(i >= 0)
     then i
     else -i

// Fertig!
def foo(i: Int): Int =
   if(i >= 0)
     then i
     else -i

...aber empfehlen würde ich dieses Vorgehen sicher nicht - erst denken, 
dann tippen.

Back to de.comp.lang.java | Previous | NextPrevious in thread | Next in thread | Find similar


Thread

guter Stil void oder boolean Luis Bischof <luisbischof@gmx.de> - 2022-07-09 08:41 -0700
  Re: guter Stil void oder boolean Michael Paap <feunews@mpaap.de> - 2022-07-09 20:53 +0200
    Re: guter Stil void oder boolean Wanja Gayk <brixomatic@yahoo.com> - 2022-08-14 21:41 +0200
  Re: guter Stil void oder boolean Michael Paap <feunews@mpaap.de> - 2022-07-10 00:46 +0200
  Re: guter Stil void oder boolean Patrick Roemer <sangamon@netcologne.de> - 2022-07-11 12:57 +0200
    Re: guter Stil void oder boolean Patrick Roemer <sangamon@netcologne.de> - 2022-07-11 16:25 +0200
      Re: guter Stil void oder boolean Michael Paap <feunews@mpaap.de> - 2022-07-11 17:16 +0200
      Re: guter Stil void oder boolean Patrick Roemer <sangamon@netcologne.de> - 2022-07-11 17:43 +0200
  Re: guter Stil void oder boolean Patrick Roemer <sangamon@netcologne.de> - 2022-07-11 13:26 +0200
    Re: guter Stil void oder boolean Patrick Roemer <sangamon@netcologne.de> - 2022-07-11 17:29 +0200
      Re: guter Stil void oder boolean Patrick Roemer <sangamon@netcologne.de> - 2022-07-11 17:44 +0200

csiph-web