In C# können Sie schreiben:Scala entspricht den Erweiterungsmethoden von C#?
using System.Numerics;
namespace ExtensionTest {
public static class MyExtensions {
public static BigInteger Square(this BigInteger n) {
return n * n;
}
static void Main(string[] args) {
BigInteger two = new BigInteger(2);
System.Console.WriteLine("The square of 2 is " + two.Square());
}
}}
Wie würde diese einfachen extension method aussieht wie in Scala?
Achtung: unter Verwendung der 'neue {...}' Syntax, die Sie tatsächlich verursacht, den Compiler einen Strukturtyp für die 'richInt' Verfahren abzuleiten, bedeutung dass alle Aufrufe von 'square' mit Reflektion (einem Performance Killer) erfolgen. Es wäre besser, eine 'RichInt'-Klasse zu definieren, die' square' definiert und von der 'richInt'-Methode zurückgegeben wird. –
@Daniel, könnten Sie den Code schreiben, den Sie beschreiben? – OscarRyz
@Support Füge 'class RichInt (i: Int) {def square = i * i}' zu 'MyExtensions' hinzu und mache' new RichInt (i) 'auf der' richInt' Methode. –