scala - Is there there any difference or reason to prefer one of these function signatures? -


i don't think there's difference, or reason prefer 1 on other, wanted check...

def length(l: list[any]) def length[t](l: list[t]) 

if want length of list, there no difference you.
but if want operatations elements of list, there is.

val l = list(1, 2, 3, 4) def secondelementany(l: list[any]) = l.tail.head def secondelementgen[a](l : list[a]) = l.tail.head 

giving 2 functions , list, expect 2 list.

val secondany = secondelementany(l) val secondgen = secondelementgen(l) 

if print values console, spot no diference, if try cast them float example, error. secondany.tofloat tell us, secondany type of any , cannot use function tofloat on any.
in contrast secondgen.tofloat give float value.

the reason is, compiler aproximates full signatures follows.

def secondelementany(l: list[any]): = l.tail.head def secondelementgen[a](l: list[a]): = l.tail.head 

as can see return type of first function any, any whereas return type of second function depends on type of list. element of type. typesafe.


Comments

Popular posts from this blog

ios - UICollectionView Self Sizing Cells with Auto Layout -

node.js - ldapjs - write after end error -

DOM Manipulation in Wordpress (and elsewhere) using php -