On 23.08.2017 00:52, MG wrote:
Hi Paul,

On 21.08.2017 04:30, Paul King wrote:

    Introduce a "var" (o.s.) keyword that allows deduction of type
    through assignment:
    var device = new PrinterDevice(...) // device variable will have
    type PrinterDevice without the need to explictely state that
    Rationale: This is a well known feature of other languages, that
    reduces the need to explictely define the type of variables.


How is this different to the current type inferencing?

The variable/field will have the type of the initally assigned value
(instead of Object when using def), therefore one cannot accidentially
assign any other type to it.


Didn't see a further comment on this so... If you have the static compilation mode we use flow typing to determine the type of the variables. That means:

def x = ""

will make x have the type compile time type String, so that x.foo() will be marked as compilation error. Flow typing means you can do this:

def x = ""
x = 1

without getting an error. Basically you loose compile time checks on assignment and gain more flexibility on the usage of the variable. But since you seem to want to make everything final if possible, that should not bother you too much.

The bottom line is: var kind of the default in static compilation mode

bye Jochen

Reply via email to