Tôi có các cấu trúc và lớp học mà tôi muốn có thể dễ dàng tạo từ các chuỗi theo kiểu chung, sử dụng phương thức to!T(string)
. Tuy nhiên, tôi không chắc làm thế nào tôi có thể 'ghi đè lên' phương pháp để có được loại hành vi này. Đi từ loại của tôi đến chuỗi là dễ dàng (tôi chỉ cần xác định opCast(string)
), nhưng là những gì tôi đang tìm kiếm thậm chí có thể?Ghi đè lên! T() cho T đã xác định trong D?
9
A
Trả lời
11
Không xác định opCast
cho string
nếu bạn muốn loại của mình chuyển đổi thành string
. Đó là những gì toString
là dành cho. writeln
và format
và cách sử dụng tương tự toString
, không được đúc hoặc to
và to
sẽ sử dụng toString
, vì vậy, tốt hơn nên xác định toString
để chuyển đổi thành string
. Bạn xác định opCast
để chuyển đổi thành các loại khác hơn string
. Sau đó, bạn có thể sử dụng điều đó bằng cách truyền hoặc với to
.
Bây giờ, nếu bạn muốn chuyển đổi một string
thành loại do người dùng xác định, thì chỉ cần xác định hàm tạo thích hợp và điều đó sẽ hoạt động với to
.
import std.conv;
struct S
{
int i;
this(string s)
{
i = to!int(s);
}
string toString()
{
return to!string(i);
}
}
void main()
{
auto s = to!S("42");
assert(s.i == 42);
auto t = to!string(s);
assert(t == "42");
}
Các vấn đề liên quan
- 1. dbWriteTable (..., append = T) được ghi đè trong R
- 2. mặc định (T) so với Activator.CreateInstance (T)
- 3. Lỗi: thông số loại <T> T không thể được xác định trong Maven Install
- 4. Xác định bù đắp múi giờ trong T-SQL
- 5. Ghi đè lên Setter trong Phân lớp
- 6. Git stash để ghi đè lên các tệp đã thêm
- 7. lỗi LNK2005: xxx đã được xác định trong MSVCRT.lib (MSVCR100.dll) \t C: \ something \ LIBCMT.lib (setlocal.obj)
- 8. Xác định xem một IQueryable <T> đã được đặt hàng hay không
- 9. Toán tử '==' cho loại T?
- 10. Lấy loại của một mảng T, mà không chỉ định T - Type.GetType ("T []")
- 11. Ghi đè lên: di chuột với jQuery?
- 12. Xóa \ n hoặc \ t khỏi một chuỗi đã cho
- 13. T/= d có nghĩa là gì? Python và gặp lỗi
- 14. Maven: Có thể ghi đè lên cấu hình của một plugin đã được xác định cho một cấu hình trong một phụ huynh POM
- 15. Tôi có nên ghi đè lên ExecutionContext mặc định không?
- 16. ObservableCollection (Of T) vs BindingList (của T)?
- 17. Có trường hợp sử dụng cho `newtype T = MkT (T -> T)` không?
- 18. CreateFile luôn ghi đè lên tập tin được chỉ định
- 19. Kiểu tham số T đang ẩn kiểu T trong <T> T [] toArray (T [] a) bằng Eclipse
- 20. Làm cách nào để ghi đè lên tabinden mặc định cho Ruby trong Vim?
- 21. Làm thế nào để xác định một loại mở rộng cho T [] trong F #?
- 22. Tại sao T() = T() được phép?
- 23. Cho chuỗi s, tìm chuỗi ngắn nhất t, sao cho, t^m = s
- 24. Yêu cầu ghi đè đè lên bộ điều khiển SpringMVC
- 25. Làm một vị tái sử dụng cho EntitySet <T>, IQueryable <T> và IEnumerable <T>
- 26. Moq framework Func <T,T>
- 27. Mapping giữa T -> IHandler <T>
- 28. Sao chép tập tin mà không ghi đè lên
- 29. PrimeFaces: cách ghi đè lên lớp CSS
- 30. IList <T> .FindIndex (Int32, Predicate <T>)
Tuyệt vời, không nhận ra điều đó thật đơn giản! –