- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在 Swift 4.0 的 Playground 中有一个非常简单的类,它覆盖了 == 运算符。
我不明白为什么当类继承/不继承 Equatable 协议(protocol)时,Swift 编译器的行为不同。
这里是继承Equatable协议(protocol)时的类
class Test: Equatable {
var value = 0
init(_ initialValue:Int) {
value = initialValue
}
static func == (lhs:Test, rhs:Test) -> Bool {
return lhs.value == rhs.value ? true : false
}
}
let test1 = Test(0)
var test4:Test? = nil
if test1 == test4 {
print("test1 and test4 are equals")
} khác {
print("test1 not equals to test4")
}
执行此代码时,它会显示“test1 不等于 test4”。这是预期的行为。
接下来,当我从类中删除“Equatable”协议(protocol)时
lớp Kiểm tra {
var value = 0
init(_ initialValue:Int) {
value = initialValue
}
static func == (lhs:Test, rhs:Test) -> Bool {
return lhs.value == rhs.value ? true : false
}
}
let test1 = Test(0)
let test3 = Test(0)
var test4:Test? = nil
if test1 == test4 {
print("test1 and test4 are equals")
} khác {
print("test1 not equals to test4")
}
我在线上得到一个编译错误
if test1 == test4 {
带有以下消息:“可选类型‘测试’的值?”未展开;您是要使用“!”还是“?”?
为什么使用/不使用 Equatable 时行为会有所不同?
事实上,当类继承自 Equatable 时,我也预料到同样的编译错误,因为我比较了一个非可选的和一个可选的。
当类继承 Equatable 时,比较非可选和可选是否安全?
câu trả lời hay nhất
public func ==(lhs: T?, rhs: T?) -> Bool where T : Equatable
它允许比较两个可选值如果基础类型是 Equatable
。 在您的第一种情况下会调用该运算符
let test1 = Test(0)
var test4:Test? = nil
if test1 == test4 { ... }
(左操作数自动包装成一个可选的。)
nếu như Bài kiểm tra
不符合 Equatable
则该运算符符合不匹配,因此没有 ==
运算符进行两次 Test?
操作数。因此编译错误。
关于swift - 为什么 swift 编译器在有/没有 Equatable 协议(protocol)的情况下对相等运算符的行为不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47059252/
Tôi có cái bàn như thế này --------------------------------------------- ---- ưu tiên tiêu đề kích thước id
Ứng dụng của tôi chỉ chứa quảng cáo biểu ngữ trong các hoạt động khác nhau (4 hoạt động). Vì vậy, câu hỏi của tôi là, tôi có thể sử dụng một ID đơn vị quảng cáo cho tất cả các quảng cáo biểu ngữ không? Hoặc sử dụng các đơn vị quảng cáo khác nhau cho từng Hoạt động
Tôi có một danh sách tùy ý các danh sách số tùy ý (nhưng thống nhất). (Chúng là tọa độ giới hạn của thùng trong không gian n, các góc mà tôi muốn vẽ, nhưng điều đó không thành vấn đề.) Tôi muốn tạo danh sách tất cả các kết hợp có thể có. Vì vậy: [[1,2], [3,4],[5,6]] tạo ra [[1
Tôi mới bắt đầu học Java ở trường và đang thử nghiệm các điều khiển và đồ họa tùy chỉnh. Tôi hiện đang làm việc với các mẫu khóa và lúc đầu mọi thứ đều ổn, nhưng đột nhiên nó vẽ không chính xác. Tôi đã thay đổi một số mã nhưng khi thấy lỗi tôi lập tức thay đổi lại (hoàn tác, ftw) nhưng
Tôi gặp phải một vấn đề nhỏ khi sử dụng Group By With Rollup khi nhận được Số lượng riêng biệt. Vấn đề là tóm tắt Rollup chỉ là tổng số giá trị Distinct trong tất cả các nhóm chứ không phải tất cả
Điều này không hiệu quả: select count(distinct colA, colB) from mytable Tôi biết tôi có thể giải quyết vấn đề này một cách đơn giản bằng cách chọn kép. chọn số(*) từ (
Câu hỏi này đã có câu trả lời ở đây: Ký tự khoảng trắng biểu thức chính quy JavaScript (5 câu trả lời) Đã đóng 2 năm trước. Bạn có thể giải thích tại sao tôi nhận được văn bản so sánh sai ===
Câu hỏi này đã có câu trả lời: 奥git_a (56 câu trả lời) Đã đóng 9 năm trước. Tôi được yêu cầu viết hàm SortByFoo trong Javascript để phản hồi chính xác cho bài kiểm tra này: // Does not cras
Vì vậy, tôi phải nói rằng, cho đến nay, SQL là khía cạnh yếu nhất của tôi với tư cách là một nhà phát triển. Có lẽ những gì tôi đang cố gắng thực hiện rất đơn giản. Mình có một cái như thế này (đây không phải là mô hình thật đâu, nhưng để cho dễ hiểu mà không mất quá nhiều thời gian giải thích thì mình đã nghĩ ra một bản mô phỏng chính xác những gì mình phải sử dụng)
Câu hỏi này đã có câu trả lời ở đây: Từ khóa "this" hoạt động như thế nào? (22 câu trả lời) Đã đóng 3 năm trước. Tóm lại: tại sao khi sử dụng Object, hàm lại được gọi trực tiếp và truyền theo tham chiếu
Câu hỏi này đã có câu trả lời ở đây: Đã đóng 12 năm trước. Có thể trùng lặp: sự khác biệt giữa toán tử dấu chấm (.) và (-
Tôi thực sự không hiểu chuyện gì đang xảy ra ở đây nhưng: khi tôi hiểu: colorIndex += len - stopPos; for(int m = 0; m < len - stopPos; m++) { c
Cách tốt nhất để suy nghĩ về chức năng Group By trong MySQL là gì? Tôi đang viết truy vấn MySQL để trích xuất dữ liệu từ bảng tổng hợp trong Excel thông qua kết nối ODBC để người dùng có thể dễ dàng truy cập dữ liệu. Ví dụ: tôi có:
SQL tôi muốn là như thế này: SELECT week_no, type, SELECT count(distinct user_id) FROM group WHERE pts > 0 FROM bas
Bảng lưu trữ: +--+-------+--------+ |id|name |date | -+ |1 |x |Ma
Đối với chrome và ff, tập lệnh này hoạt động hoàn hảo khi nói đến những điều khủng khiếp. Bài toán hàm getY(oElement) { var curtop = 0;
Tôi không thể cung cấp mã ngay bây giờ vì tôi hiện đang thực hiện ý tưởng trong đầu và tìm kiếm trên internet. Tôi đã tìm hiểu về giao tiếp giữa các tiến trình và sử dụng bộ nhớ dùng chung để chia sẻ dữ liệu (đặc biệt là cấu trúc) giữa các tiến trình. Tuy nhiên, khi sử dụng fork( trên một chương trình được lưu trong tệp .c khác
Tôi muốn sử dụng các chức năng khác nhau trong bộ sưu tập người dùng. Trong shell mongo tôi có thể sử dụng như thế này: db.users.distinct("name"); trong đó tên là trường tập hợp được sử dụng để phân biệt. Tương tự như vậy tôi muốn, trong C
Danh sách Teaching_report = Danh sách mới(); var data_context = new DataEvidencijaDataContext();
Tôi có tính năng tìm kiếm và Foundation của Ransack trong ứng dụng Rails của mình và css cục bộ hoạt động tốt, trong khi ứng dụng tương tự đang được sản xuất có một điểm khác biệt: mọi thứ khác trong ứng dụng đều giống hệt nhau. Mình dùng Chrome và Sa
Tôi là một lập trình viên xuất sắc, rất giỏi!