in proposal2:

If the function reaches a return instruction with a constant or a different 
variable, then it will return that value

example:
func myComplexOperation -> result:Int {
        result = 0;
        var a = 10;

        return 4;       //this is ok
        return a;        //this is ok, result will be replaced with the value 
of a
        return result;   //this is ok, only one line is needed
        return; //fail, without argument its not valid
        return default; //this could also work (proposal1)
}

> On May 10, 2016, at 7:33 PM, Leonardo Pessoa via swift-evolution 
> <[email protected]> wrote:
> 
> This feels a little bit like back when I began studying Pascal where every 
> function has an implicit Result variable to which we were to set the return 
> value. I'm not particularly against Pascal or this syntax but it may lead to 
> programmers scratching their heads to find out where a certain value is being 
> defined to be returned from a function.
> 
> Additionally I'm not very fond of a language having two different syntaxes 
> for returning a value. What should happen if, using the second proposal, the 
> function reaches a return instruction with a constant or different variable? 
> In my understanding it should be an error since I have already declared a 
> variable for returning. It would also demand us to use two lines to return a 
> different (error?) value from a function (result = 1; return;)
> 
>> On 10 May 2016, at 9:11 pm, Eduardo Mourey Lopez Ne via swift-evolution 
>> <[email protected]> wrote:
>> 
>> This proposal consists in adding a functionally that I find useful in VB 
>> .net, that lets you set a default return value of a function at the begging 
>> rather than at the end
>> 
>> current:
>> func myComplexOperation() -> Int {    
>>   //Some long complex code that might return some value
>>      //Default return at the very end
>>      return 0
>> }
>> 
>> proposal:
>> func myComplexOperation() -> Int {
>>   //set the default return at the begging using the ‘default’ keyword or 
>> some other keyword
>>   default 0
>>   //Some long complex code that might return a value
>>   //if the end of the function is reached, return the default
>> }
>> 
>> The other alternative will be to allow naming the return value
>> proposal2:
>> func myComplexOperation() -> result:Int {
>>       //set the default return at the begging using the output variable name
>>   result = 0
>>   //Some long complex code that might return some value
>> }
>> 
>> Another alternative will be to set the default value directly like and 
>> optional parameter
>> proposal3:
>> func myComplexOperation() -> Int = 0 {
>>   //Some long complex code that might return some value
>> }
>> 
>> In all of the cases the compiler will check that a default return is set 
>> before exiting the function
>> It could be some combination of the 3 proposals
>> 
>> Thanks
>> _______________________________________________
>> swift-evolution mailing list
>> [email protected]
>> https://lists.swift.org/mailman/listinfo/swift-evolution
> _______________________________________________
> swift-evolution mailing list
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to