Rocksolid Light

groups  faq  privacy  How to post  login

Message-ID:  

Civilization is the limitless multiplication of unnecessary necessities. -- Mark Twain


rocksolid / de.comp.lang.misc / Re: Kotlin: Block zeitig verlassen, goto simulieren

SubjectAuthor
* Kotlin: Block zeitig verlassen, goto simulierenMarkus Schaaf
`- Re: Kotlin: Block zeitig verlassen, goto simulierenMarkus Schaaf

1
Subject: Kotlin: Block zeitig verlassen, goto simulieren
From: Markus Schaaf
Newsgroups: de.comp.lang.misc
Organization: A noiseless patient Spider
Date: Thu, 18 Apr 2024 20:10 UTC
Path: i2pn2.org!i2pn.org!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: msch...@elaboris.de (Markus Schaaf)
Newsgroups: de.comp.lang.misc
Subject: Kotlin: Block zeitig verlassen, goto simulieren
Date: Thu, 18 Apr 2024 22:10:46 +0200
Organization: A noiseless patient Spider
Lines: 41
Message-ID: <uvruo6$2eb0f$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Thu, 18 Apr 2024 22:10:47 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="ab2f877b03fd1af9ee1d972c17b05923";
logging-data="2567183"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX191uoC6AFDDwIvTjXl6+pWg"
User-Agent: Mozilla Thunderbird
Content-Language: de-DE, en-US
View all headers

Mal sehen, ob hier noch jemand liest, und dazu auch noch
Erfahrung mit Kotlin hat. :-)

Ich schreibe einen Parser für ein Netzwerkprotokoll. Viele kleine
Paketklassen, die einzelne Nachrichten repräsentieren etwa so:

class BlaMsg( val arg1: Type1 /*, ... */ ) {

fun write( buf: ByteBuffer ) { /* ... */ }

fun read( buf: Bytebuffer ) {
if( buf.get() != 0x20 ) throw IOException( "bad msg ..." )
val v = buf.get()
/* ... */
if( v and 0x01 != 0 ) throw IOException( "bad msg ..." )
/* ... */
}
}

Die Exception ist immer gleich, ich brauche an der Stelle keine
Varianz. Die ganze throw-Klausel könnte tatsächlich auch etwas
komplexer sein und ein paar lokale Werte verwursten. Goto gibt's
anscheinend nicht. Eine extra Funktion will ich sehr gerne
vermeiden. Also hatte ich die Idee:

do {
/* ... */
if( sometest() ) break
return
} while( false )

throw IOException( "..." )

Allerdings scheint das kein typisches Idiom in der Sprache zu
sein. Jedenfalls labert Android-Studio dann immer von unreachable
Code. Der Editor und sogar der Compiler.

Hinweise, Ideen?

MfG

Subject: Re: Kotlin: Block zeitig verlassen, goto simulieren
From: Markus Schaaf
Newsgroups: de.comp.lang.misc
Organization: A noiseless patient Spider
Date: Thu, 18 Apr 2024 21:30 UTC
References: 1
Path: i2pn2.org!i2pn.org!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: msch...@elaboris.de (Markus Schaaf)
Newsgroups: de.comp.lang.misc
Subject: Re: Kotlin: Block zeitig verlassen, goto simulieren
Date: Thu, 18 Apr 2024 23:30:36 +0200
Organization: A noiseless patient Spider
Lines: 10
Message-ID: <uvs3ds$2fo7a$1@dont-email.me>
References: <uvruo6$2eb0f$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Thu, 18 Apr 2024 23:30:37 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="ab2f877b03fd1af9ee1d972c17b05923";
logging-data="2613482"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19vy+/yf6G34eFHO5b1jaX0"
User-Agent: Mozilla Thunderbird
In-Reply-To: <uvruo6$2eb0f$1@dont-email.me>
Content-Language: de-DE, en-US
View all headers

Ich schrieb:

> Eine extra Funktion will ich sehr gerne
> vermeiden.

Was, wie ich gerade herausfand, völlig blöde ist: Kotlin hat
lokale Funktionen, die Closures sind. Wie ihr seht, lerne ich die
Sprache erst. :-)

MfG


rocksolid / de.comp.lang.misc / Re: Kotlin: Block zeitig verlassen, goto simulieren

1
server_pubkey.txt

rocksolid light 0.9.136
clearnet tor