Re:Microsoft takes .NET open source and cross-platform
by jakevn on Wednesday November 12, 2014 @06:50PM
(#8599090)
> implicit parameters (C# doesn't have an analog to these that I can think of)
C# allows default values for parameters, but it's not quite the same.
Example of C# default value for parameter:
static void Addition(int a, int b = 42)
{
Console.WriteLine(a + b);
}
Addition(4); // Prints 46
Addition(4, 5); // Prints 9
In Scala, the default (implicit) value has more complex rules.Like C#, implicit parameters must come after non-implicit parameters (if any).
Unlike C#, the implicit value does not need to be defined in the signature. Also unlike C#, if you provide the value for one implicit parameter, you must provide the value for all implicit parameters.
Re:Microsoft takes .NET open source and cross-platform
by dragonwriter on Wednesday November 12, 2014 @07:05PM
(#8599152)
> C# allows default values for parameters, but it's not quite the same.
Right. Scala has C#-style default parameters as well, implicit parameters are a different (though very loosely related) thing.
True for co/contravariance. For implicits, that depends on which implicits you are talking about.
Scala has:
* implicit conversion operators (these have existed in C# for some time, under the same name)
* implicit parameters (C# doesn't have an analog to these that I can think of)
* implicit classes (C# has an analog in classes providing extension methods, though the classes themselves are distinguished by a keywords as they are in Scala; in Scala, these are essentially syntactic sugar for creating a normal class and an implicit conversion from the extended class.)