Monkey accepts float passed into int w/o a cast
Monkey Forums/Monkey Programming/Monkey accepts float passed into int w/o a cast| 
 | ||
| Output... The result is 3 The result is 2.3 I understand why the Add:Int function is called for the first line of output; an overloaded function with a default argument is used when no matching overloaded function is found. Just wondering if a float should be passed into int type argument w/out a cast. 
Strict
Global dec_glob:Float = 0.8
Function Add:Int(valOne:Int, valTwo:Int=2)
    Return valOne + valTwo
End
Function Add:Float(valOne:Float, valTwo:Float)
    Return valOne + valTwo
End
Function Main:Int()
    local decimal:Float = 1.5
    local statement:String = "The result is "
    Print(statement+Add(decimal))
    Print(statement+Add(decimal, dec_glob))
    Return 0
End
 | 
| 
 | ||
| My guess is that Monkey is autoboxing the float to an int. | 
| 
 | ||
| They're primitives so it's just a direct cast in languages where it makes a difference. The "should" of it is not possible to answer, but it's been around for a while so is presumably intended Monkey behaviour. Most languages would give you a warning about loss of precision where an implicit float->int cast is occurring. Monkey doesn't do warnings. | 
| 
 | ||
| I am glad that Monkey does it that way and hope it won't be changed. | 
| 
 | ||
| I think the compiler lets some stuff through that it shouldn't.  It's rarely a problem, but it means that sometimes when a bug bites it's not where you expect. However, in the case above, I think Monkey is working as intended. |