www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - How to get return type of current method?

reply Mike B Johnson <Mikey Ikes.com> writes:
How can I get the return type of the current method without 
specifying the name or any complexity? Similar to typeof(this).
Apr 18 2017
parent reply ketmar <ketmar ketmar.no-ip.org> writes:
Mike B Johnson wrote:

 How can I get the return type of the current method without specifying 
 the name or any complexity? Similar to typeof(this).
typeof(return)
Apr 18 2017
parent reply Mike B Johnson <Mikey Ikes.com> writes:
On Tuesday, 18 April 2017 at 23:49:35 UTC, ketmar wrote:
 Mike B Johnson wrote:

 How can I get the return type of the current method without 
 specifying the name or any complexity? Similar to typeof(this).
typeof(return)
Thanks, sweet and simple!
Apr 18 2017
parent reply Meta <jared771 gmail.com> writes:
On Wednesday, 19 April 2017 at 00:22:14 UTC, Mike B Johnson wrote:
 On Tuesday, 18 April 2017 at 23:49:35 UTC, ketmar wrote:
 Mike B Johnson wrote:

 How can I get the return type of the current method without 
 specifying the name or any complexity? Similar to 
 typeof(this).
typeof(return)
Thanks, sweet and simple!
One note: if the function has a return type of `auto`, you cannot use `typeof(return)` within the function.
Apr 18 2017
parent =?UTF-8?Q?Ali_=c3=87ehreli?= <acehreli yahoo.com> writes:
On 04/18/2017 06:40 PM, Meta wrote:
 On Wednesday, 19 April 2017 at 00:22:14 UTC, Mike B Johnson wrote:
 On Tuesday, 18 April 2017 at 23:49:35 UTC, ketmar wrote:
 Mike B Johnson wrote:

 How can I get the return type of the current method without
 specifying the name or any complexity? Similar to typeof(this).
typeof(return)
Thanks, sweet and simple!
One note: if the function has a return type of `auto`, you cannot use `typeof(return)` within the function.
Actually that works but apparently order matters: import std.stdio; bool condition; auto foo() { // Compilation ERROR here writeln(typeof(return).stringof); if (condition) { return 1.5; } return 42; } void main() { foo(); } Error: cannot use typeof(return) inside function foo with inferred return type But if you move typeof(return) after the first return statement, which determines the return type of the function per spec, then it works: auto foo() { if (condition) { return 1.5; } // Works here writeln(typeof(return).stringof); return 42; } Prints "double". Ali
Apr 18 2017