> When a newbie ROOT user wants to see how ROOT works, he does things like
> :
>
> root [0] TText * t="fgftrjhjh"
> root [1] t
> (class TText*)0x1407b98c0
> root [2] TString * t1="fgftrjhjh"
> root [3] t1
> (class TString*)0x1407b98c0
>
> Usually, people expect a little bit more info., for example the content
> of a string. If they do
>
> root [17] TString j="bbbbbvbbbb"
> root [18] j
> (class TString)5376838504
>
> There is no way except j.Data() to print the content. that's very
> un-intuitive. Should we think more about intuitiveness ?
> Is there any general method (object.Info() for example) that could be
> called each time the user specifies just the name of the object ?.
> I think it's important for these new users to feel comfortable very
> quickly, if they know C/C++, and if we don't want them to be discouraged
> and feel like "this is clearly not yet a finished product. Should we use
> it ?"
> (unfortunately, I heard already that kind of remarks). We know that ROOT
> has still some road ahead but this kind of remarks leaves me a little
> bit uncomfortable, even when I know and plea for the power of ROOT.
I made a change so that you can customize behavior at interactive evaluation.
You can define yourown G__ateval() function as follows
#include <iostream>
int G__ateval(TString& x) {
cout << j.Data() << endl;
return(0);
}
#include <string>
template<class T> int G__ateval(T& x) {
cout << x << endl;
return(1);
}
Loading above file, G__ateval([anytype]) will be evaluated when expression is
tested from interactive interface.
This change will be included in cint5.13.62 or later.
> On a side note, when someone doesn't specify the type of a variable, for
> example
>
> root [30] a="gfgfg"
> Warning: Undeclared data member a FILE:/tmp/ebaaaCfba LINE:1
> (char* 0x140830640)"gfgfg"
> *** Interpreter error recovered ***
This was a bug. I fixed this. If you see this message, 'a' should not be
defined.
Masaharu Goto