Trong C# bạn có thể viết:Scala tương đương với các phương pháp mở rộng của 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());
}
}}
Làm thế nào sẽ extension method nhìn này đơn giản như trong Scala?
Cảnh báo: bằng cách sử dụng 'cái mới {...} 'cú pháp, bạn đang thực sự gây ra trình biên dịch để suy ra một loại cấu trúc cho môi trường' phương pháp richInt', ý nghĩa rằng bất kỳ invocations của 'square' sẽ được thực hiện bằng cách sử dụng phản ánh (một kẻ giết người hiệu suất). Sẽ tốt hơn nếu định nghĩa một lớp 'RichInt' định nghĩa' square' và được trả về từ phương thức 'richInt'. –
@Daniel, bạn có thể đăng mã mà bạn mô tả không? – OscarRyz
@Support Thêm 'lớp RichInt (i: Int) {def square = i * i}' vào 'MyExtensions' và làm' mới RichInt (i) 'trên phương thức' richInt'. –