simple console input's not working...
Tower Ty
towerty at msn.com.au
Fri Jun 6 04:09:31 PDT 2008
Mike Parker Wrote:
> SodiumFree wrote:
> > So i copy this code, pretty much straight from the book (page 139):
> >
> > module inputTest;
> > import tango.io.Console;
> >
> > void main(){
> > Cout("What is your name? ").flush;
> > auto name = Cin.readln;
> > Cout("Hello ")(name).newline;
> > }
> >
> >
> > However when i try compiling, dmd spits out this error:
> >
> > C:\d.stuff\inputTest>dmd inputTest.d
> > inputTest.d(6): function tango.io.Console.Console.Input.readln (char[],bool) does not match parameter types ()
> > inputTest.d(6): Error: expected 2 arguments, not 0
> > inputTest.d(7): function alias tango.io.Console.Console.Output.append (char[]) does not match parameter types (bool)
> > inputTest.d(7): Error: expected 0 arguments, not 1
> >
> >
> > Any idea what's going on?
>
> Cin.readln (which is the method tango.io.Console.Console.Input.readln)
> expects at least one argument -- a string in which to store the input.
> You've given it nothing. The compiler reports this in the first error,
> then keeps on compiling.
>
> Second, 'name' is automatically inferred as a bool and not as a string
> as you seem to intend it to be. You'll see in the documentation that
> readln returns true if input is read and false if not. So the compiler
> sees you trying to pass a bool value in the call to Cout when it expects
> a string, resulting in the second error.
>
> A look at the source for tango.io.Console should make the error messages
> more clear. Console is a struct with the inner classes Input and Output.
> Cin is an instance of Console.Input. Hence the
> tango.io.Console.Console.Input.readln (char[],bool) in the error string.
> In Console.output, the append method is aliased to opCall. That's what
> allows the COut()() syntax. It also is the reason you see
> tango.io.Console.Console.Output.append (char[]).
>
> Your corrected code:
>
> ======================================================
> import tango.io.Console;
>
> void main()
> {
> Cout("What is your name? ").flush;
> char[] name;
> if(Cin.readln(name))
> {
> Cout("Hello ")(name).newline;
> }
> }
> ==================================================
>
Good Mike , and this goes too
module test4;
import tango.io.Console;
void main(){
Cout("What is your name? ").flush;
char[] name;
Cin.readln(name);
char[] lead = "Hello ";
Cout(lead)(name).newline;
}
More information about the Digitalmars-d-learn
mailing list