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


Groups > comp.lang.java.programmer > #5169

Re: Call by Result

Newsgroups comp.lang.java.programmer
From Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at>
Subject Re: Call by Result
References <nkc3v61jg7i21l7n482ce561dq9fdogg3m@4ax.com>
Message-ID <slrniv3i5o.phi.avl@gamma.logic.tuwien.ac.at> (permalink)
Date 2011-06-10 07:33 +0000

Show all headers | View raw


Gene Wirchenko <genew@ocis.net> wrote:
>      I am writing a simple preprocessor.  I have a few spots where a
> string needs to be parsed.  I want to call something like this:
>           String ReturnString="";
>           boolean DidItWork=GetString(ReturnString);
>           if (!DidItWork)
>              // too bad
> It is not acceptable to have a special String value mean failure.  I
> want the method to be able to return any potential string.

There's three basic ways to do it:

1) Return null to indicate failure. (Unless you consider null to
   also be a valid String-value - That typically depends on the
   context and I didn't read your wording as being explicit on that.)
    String retVal = getString();
    if (retVal == null) { /* too bad */ }
    This won't work, though, if you need to return a String both
    on failure and success.

2) instead of the string, pass a mutable container of a string:
    String[] stringContainer = new String[1];
    boolean didItWork = getString(stringContainer);
    if (didItWork) { /* stringContainer[0] has the string */ }

  and within GetString:
    public boolean getString(String[] strCont) {
            strCont[0] = "blah"; return true;
    }

3) encode the String: e.g.: prepend a particular text to "success"-
    strings, and a different text to "failure"-strings:

    public String getString(String[] strCont) {
        if (ok()) { return "+" + okMessage; }
        else      { return "-" + errMessage; }
    }
  use:
    String retVal = getString();
    if (retVal == null || retVal.length() == 0) { /* internal error */ } else
    if ( retVal[0] == '+' ) { 
        // All's well that ends well:  retVal.subString(1)
    } else if ( retVal[0] == '-' ) {
        // Uh-Oh!:  retVal.subString(1)
    } else {  /* internal error */ }


PS: Surely, someone will soon point out coding-conventions about
  upper-/lower-casing different kinds of identifiers. I dare to agree
  in advance.  (Btw., I changed to conformant casing in my examples.) 

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


Thread

Call by Result Gene Wirchenko <genew@ocis.net> - 2011-06-09 23:03 -0700
  Re: Call by Result Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-06-10 07:33 +0000
    Re: Call by Result Nigel Wade <nmw-news@ion.le.ac.uk> - 2011-06-10 10:03 +0100
      Re: Call by Result Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-06-10 09:47 +0000
      Re: Call by Result Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-06-10 08:23 -0300
        Re: Call by Result Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-06-10 13:12 +0000
          Re: Call by Result Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-06-10 15:44 -0300
            Re: Call by Result Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-06-12 16:29 +0000
              Re: Call by Result Silvio <silvio@moc.com> - 2011-06-12 23:00 +0200
                Re: Call by Result Silvio <silvio@moc.com> - 2011-06-12 23:06 +0200
                Re: Call by Result Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-06-14 10:52 +0000
                Re: Call by Result Silvio <silvio@moc.com> - 2011-06-14 17:13 +0200
                Re: Call by Result Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-06-14 17:58 -0300
                Re: Call by Result Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-06-14 21:18 +0000
                Re: Call by Result Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-06-14 20:14 -0300
                Re: Call by Result Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-06-15 07:13 -0300
                Re: Call by Result Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-06-15 12:50 +0000
                Re: Call by Result Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-06-15 18:52 -0300
                Re: Call by Result lewbloch <lewbloch@gmail.com> - 2011-06-15 07:06 -0700
                Re: Call by Result Michael Wojcik <mwojcik@newsguy.com> - 2011-06-15 21:33 -0400
                Re: Call by Result Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-06-16 11:03 +0000
                Re: Call by Result "H.J. Sander Bruggink" <sander.bruggink@uni-due.de> - 2011-06-16 13:09 +0200
                Re: Call by Result Lewis Bloch <lewisbloch@google.com> - 2011-06-16 06:59 -0700
                Re: Call by Result "John B. Matthews" <nospam@nospam.invalid> - 2011-06-16 23:14 -0400
        Re: Call by Result Gene Wirchenko <genew@ocis.net> - 2011-06-10 11:31 -0700
          Re: Call by Result Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-06-12 14:27 -0300
      Re: Call by Result Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2011-06-10 07:20 -0700
      Re: Call by Result Patricia Shanahan <pats@acm.org> - 2011-06-10 09:30 -0700
        Re: Call by Result Gene Wirchenko <genew@ocis.net> - 2011-06-10 11:44 -0700
    Re: Call by Result Gene Wirchenko <genew@ocis.net> - 2011-06-10 11:26 -0700
      Re: Call by Result Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-06-11 15:07 +0000
        Re: Call by Result Abu Yahya <abu_yahya@invalid.com> - 2011-06-11 23:00 +0530
          Re: Call by Result Martin Gregorie <martin@address-in-sig.invalid> - 2011-06-11 19:36 +0000
            Re: Call by Result Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-06-11 21:06 +0000
              Re: Call by Result Martin Gregorie <martin@address-in-sig.invalid> - 2011-06-12 10:53 +0000
                Re: Call by Result Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2011-06-12 09:28 -0700
                Re: Call by Result Martin Gregorie <martin@address-in-sig.invalid> - 2011-06-12 17:48 +0000
                Re: Call by Result Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2011-06-12 13:19 -0700
            Re: Call by Result Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2011-06-11 15:39 -0700
              Re: Call by Result Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-06-12 11:07 +0000
                Re: Call by Result markspace <-@.> - 2011-06-12 07:02 -0700
                Re: Call by Result Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2011-06-12 09:39 -0700
                Re: Call by Result Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-06-14 10:29 +0000
                Re: Call by Result Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2011-06-14 09:14 -0700
                Re: Call by Result markspace <-@.> - 2011-06-14 09:21 -0700
                Re: Call by Result Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2011-06-14 09:53 -0700
                Re: Call by Result Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2011-06-14 09:57 -0700
            Re: Call by Result Gene Wirchenko <genew@ocis.net> - 2011-06-12 21:44 -0700
        Re: Call by Result Gene Wirchenko <genew@ocis.net> - 2011-06-12 21:40 -0700
  Re: Call by Result Patricia Shanahan <pats@acm.org> - 2011-06-10 01:30 -0700
    Re: Call by Result Gene Wirchenko <genew@ocis.net> - 2011-06-10 11:45 -0700
  Re: Call by Result Eric Sosman <esosman@ieee-dot-org.invalid> - 2011-06-10 07:50 -0400
  Re: Call by Result Silvio <silvio@moc.com> - 2011-06-10 15:35 +0200
  Re: Call by Result Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-06-10 13:56 +0000
  Re: Call by Result Peter Duniho <NpOeStPeAdM@NnOwSlPiAnMk.com> - 2011-06-10 07:22 -0700
    Re: Call by Result Gene Wirchenko <genew@ocis.net> - 2011-06-10 11:56 -0700
    Re: Call by Result Gene Wirchenko <genew@ocis.net> - 2011-06-10 11:57 -0700
      Re: Call by Result Patricia Shanahan <pats@acm.org> - 2011-06-10 13:50 -0700
        Re: Call by Result Gene Wirchenko <genew@ocis.net> - 2011-06-12 21:53 -0700
          Re: Call by Result Arved Sandstrom <asandstrom3minus1@eastlink.ca> - 2011-06-13 07:20 -0300
            Re: Call by Result Gene Wirchenko <genew@ocis.net> - 2011-06-13 08:08 -0700
      Re: Call by Result Wojtek <nowhere@a.com> - 2011-06-11 16:35 -0700
        Re: Call by Result Martin Gregorie <martin@address-in-sig.invalid> - 2011-06-12 11:05 +0000
        Re: Call by Result Gene Wirchenko <genew@ocis.net> - 2011-06-12 21:56 -0700
          Re: Call by Result Wojtek <nowhere@a.com> - 2011-06-14 00:40 -0700
    Re: Call by Result Andreas Leitgeb <avl@gamma.logic.tuwien.ac.at> - 2011-06-11 21:18 +0000
  Re: Call by Result markspace <-@.> - 2011-06-10 08:43 -0700
  Re: Call by Result RedGrittyBrick <RedGrittyBrick@spamweary.invalid> - 2011-06-10 17:01 +0100
    Re: Call by Result Martin Gregorie <martin@address-in-sig.invalid> - 2011-06-10 16:55 +0000
    Re: Call by Result Gene Wirchenko <genew@ocis.net> - 2011-06-10 11:59 -0700
      Re: Call by Result Wojtek <nowhere@a.com> - 2011-06-11 16:24 -0700
        Re: Call by Result Gene Wirchenko <genew@ocis.net> - 2011-06-12 21:59 -0700
          Re: Call by Result Paul Cager <paul.cager@googlemail.com> - 2011-06-13 07:53 -0700
          Re: Call by Result Wojtek <nowhere@a.com> - 2011-06-14 00:43 -0700
  Re: Call by Result Gene Wirchenko <genew@ocis.net> - 2011-06-10 11:55 -0700
  Re: Call by Result Steven Simpson <ss@domain.invalid> - 2011-06-11 09:09 +0100
  Re: Call by Result Cholo Lennon <chololennon@hotmail.com> - 2011-06-16 11:30 -0300
    Re: Call by Result Paul Cager <paul.cager@googlemail.com> - 2011-06-17 02:38 -0700
      Re: Call by Result Gene Wirchenko <genew@ocis.net> - 2011-06-17 12:06 -0700
    Re: Call by Result lewbloch <lewbloch@gmail.com> - 2011-06-17 06:40 -0700
      Re: Call by Result Cholo Lennon <chololennon@hotmail.com> - 2011-06-17 11:43 -0300

csiph-web