- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
假设这三个类具有这个简单的层次结构:
class A {
func foo() {
print("A")
}
}
class B: A {
override func foo() {
super.foo()
print("B")
}
}
class C: B {
override func foo() {
// *******
print("C")
}
}
在 C 类中,在覆盖方法 đồ ăn 中我想调用一个方法 foo:
是否可能?
在 C++ 中,这可以通过 C->A::foo()
实现,但我如何在 Swift 中做到这一点?
câu trả lời hay nhất
super.foo()
应该足够了,因为 B 打印 "B"
và gọi siêu
打印 "MỘT"
。
class C: B {
override func foo() {
super.foo()
print("C")
}
}
let c = C()
c.foo()
Đầu ra:
MỘT
B
C
如果你想有意地从 B
中暴露出 MỘT
của foo()
,你需要创建一个新的访问器:
class B: A {
override func foo() {
super.foo()
print("B")
}
func exposeFoo() {
super.foo()
}
}
class C: B {
override func foo() {
super.exposeFoo()
print("C")
}
}
或者,使用 Đối tượng NS
和 Objective-C 运行时的强大功能:
class A: NSObject { // make sure your base class inherits from NSObject
func foo() {
print("A")
}
}
// ...
class C: B {
override func foo() {
guard let superSuper = self.superclass?.superclass() else {
return; // no super super
}
let fooImp = class_getMethodImplementation(superSuper, "foo")
typealias MyCFunction = @convention(c) (AnyObject, Selector) -> Void
let curriedImplementation = unsafeBitCast(fooImp, MyCFunction.self)
curriedImplementation(self, selector) // prints A
}
}
关于 swift 继承 : Super's Super,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35870781/
Câu hỏi này đã có câu trả lời ở đây: Tại sao các toán tử gán +=, -=, *=, /= của Java không yêu cầu truyền (11 câu hỏi)
Tôi đã tìm kiếm rất nhiều nhưng không có liên kết nào giúp tôi giải quyết vấn đề này. Tôi nhận được ORA-21500: mã lỗi nội bộ, đối số: [%s], [%s], [%s], [%s], [%s
Tôi đang thực hiện hướng dẫn về biểu thức chính quy RegexOne và có một câu hỏi về cách viết biểu thức chính quy để xóa các khoảng trắng không cần thiết. Giải pháp được cung cấp trong hướng dẫn là Chúng ta có thể bỏ qua tất cả phần bắt đầu
Mục đích hoặc chức năng của |\s trong ([\s\S]+|\s?) là gì? Không có nó, liệu biểu thức có giống như ([\s\S]+) không? Câu trả lời hay nhất Nó không hoàn toàn giống nhau. ([\s\S]+|\s?) sẽ khớp với chuỗi trống, trong khi ([
Biểu thức chính quy này có một hay hai bộ? Tôi đang cố truy cập bookTitle bằng nhóm thứ hai nhưng tôi gặp lỗi: Pattern Pattern = Pattern.compile("^\\s*(.*?)\\s+-\\s+
Cho một con trỏ chuỗi s trong C, phép lặp sau làm gì? tức là nó đi qua chuỗi theo cách nào? for (++s; *s; ++s); Câu trả lời hay nhất cho (++s; *s;++s) có nghĩa là tăng con trỏ s thành ký tự
Tôi đang phân tích một danh sách lớn bằng ứng dụng node.js và có mã này sizeCode = dbfr.CN_DESC.split('\s+-\s*|\s*-\s+') dường như không hoạt động vì nó Đã trả lại [ '
Tôi đang viết một chương trình nối chuỗi đơn giản. Chương trình hoạt động như tôi đã đăng. Tuy nhiên, lần đầu tiên tôi viết nó để tìm phần cuối của chuỗi bằng mã sau: while (*s++) ; Chuỗi tôi chuyển cho nó
Câu hỏi này đã có câu trả lời: (? và aramchand đến từ Mohandas Karamchand G Vì vậy, sau khi tách chuỗi bằng cách sử dụng các kết quả khớp này, bạn sẽ có được {"M", "K", "G"} Lưu ý
Tôi đang cố gắng chuyển đổi Bản đồ thành Danh sách bằng lambda. Về cơ bản, tôi muốn nối giữa các khóa và giá trị bằng '='. Điều này có vẻ tầm thường nhưng tôi không thể tìm ra cách thực hiện. Ví dụ: Bản đồ bản đồ = new HashMap<>();
Tôi đang xem xét K&R và gặp sự cố khi tăng con trỏ. Bài tập 5.3 (trang 107) yêu cầu bạn viết hàm strcat bằng con trỏ. Trong mã giả, hàm này thực hiện như sau: lấy 2 chuỗi làm đầu vào. tìm chuỗi
Trong mã bên dưới, pS và s.pS có được đảm bảo bằng nhau ở dòng cuối cùng không? Nghĩa là, trong câu lệnh S s = S();, có chắc chắn rằng S tạm thời sẽ không được xây dựng không? #include sử dụng không gian tên std s;
Mã mẫu minh họa: public void ReverseString(char[] s) { for(int i = 0, j = s.Length-1; i < j; i++, j--){
Tôi đang tìm kiếm tập lệnh PowerShell tương tự như ví dụ trong các ví dụ .NET. Lấy New-TimeSpan và hiển thị dưới dạng 1 ngày 2 giờ 3 phút 4 giây. Loại trừ nơi nó bằng 0 và thêm vào nơi cần thiết
def func(s): s = s + " đã được sửa" trả về s string_list = ["She", "He"] cho s trong string_li
Tôi mới làm quen với trăn. Khi tôi tìm kiếm lambda trên internet. Tôi tìm thấy tuyên bố này trong lambda_functions. processFunc = thu gọn và (lambda s:
Gần đây tôi đã bắt đầu học các biểu thức chính quy và đang cố gắng viết một biểu thức chính quy cho vấn đề trên. Điều này không khó nếu giới hạn chỉ được đặt cho một chữ cái (ví dụ: không quá 2 "b"s). Khi đó câu trả lời là: a* c*(b|ε)a* c*(b|ε)a* c* Nhưng
Khi tôi chạy cài đặt npm, tôi gặp lỗi sau nhưng tôi không thể sửa được. Tôi đã thử: npm install -g windows-build-tools nhưng không khắc phục được lỗi này ERR!
Có rất nhiều đoạn mã Haskell thú vị có sẵn trực tuyến. Bài đăng này có thể được tìm thấy trong câu hỏi Stack Overflow (tuyệt vời) này Tác giả đã viết: discou.
Tôi biết rằng ba dòng mã sau đây được thiết kế để trích xuất một chuỗi thành giá trị $ và lưu nó trong tiêu đề $. Nhưng tôi không biết sự khác biệt giữa $value =~ s/^\s+//; và $value =~ s/\s+$//;. $val
Tôi là một lập trình viên xuất sắc, rất giỏi!