Tôi không thể tìm kiếm | trong Google. Nếu bạn đã tìm thấy nó trong một mã nguồn phần mềm mà bạn đang cố gắng giải thích, bạn không biết nó làm gì và bạn không thể nhờ người khác giúp đỡ, làm thế nào bạn sẽ tìm ra nó?"|" trong "int style = SWT.APPLICATION_MODAL | SWT.OK;" làm (và làm thế nào để Google nó)?
Trả lời
Toán tử đường ống trong trường hợp này có nghĩa là "sử dụng cả SWT.APPLICATION_MODAL và SWT.OK làm tùy chọn/cờ cho hộp bật lên của tôi". Nó là một thành ngữ rất thường được sử dụng với các định danh cấu hình bitfield, đặc biệt. trong các hệ thống cửa sổ như SWT hoặc Win32.
Làm thế nào nó hoạt động
Các ống (|) điều hành là bitwise OR, nghĩa là nó sẽ tính toán một hoạt động OR của hai giá trị số nguyên nhị phân. Nếu bạn kiểm tra nơi APPLICATION_MODAL và OK được định nghĩa, bạn sẽ thấy họ là một cái gì đó như thế này:
...
SWT.OK = 1, // 00000001 in binary
SWT.ABORT_RETRY_IGNORE = 2, // 00000010 in binary
SWT.OK_CANCEL = 4; // 00000100 in binary
...
SWT.APPLICATION_MODAL = 32; // 00100000 in binary
... (and so on...)
Khi bạn Bitwise OR hai (hoặc nhiều hơn) của những con số này với nhau, bit riêng lẻ sẽ được thiết lập cho mỗi người trong số các tùy chọn:
int style = SWT.OK | SWT.APPLICATION_MODAL = 00000001 | 00100000 = 00100001
Bộ công cụ cửa sổ mà đi để giải thích phong cách sẽ có thể cho biết chính xác những gì bạn muốn (một hộp bật lên đó là phương thức và có một nút OK) bằng cách thực hiện một phép toán AND như thế này:
...
if(style & SWT.OK)
{
// we want an OK box
}
if(style & SWT.ABORT_RETRY_IGNORE)
{
// we want an Abort/Retry/Ignore box
}
if(style & SWT.OK_CANCEL)
{
// we want an OK/Cancel box
}
...
if(style & SWT.APPLICATION_MODAL)
{
// We want a modal box
}
...
Kinda thông minh, theo quan điểm khiêm tốn của tôi. Nó cho phép bạn chọn/đại diện cho nhiều tùy chọn cấu hình trong một biến duy nhất. Bí quyết nằm trong định nghĩa số nguyên của các tùy chọn và đảm bảo rằng chúng chỉ là các quyền hạn của 2.
Câu trả lời rất chi tiết. +1 – MitMaro
Bạn cũng có thể muốn so sánh câu trả lời này để biết thêm thông tin: http://stackoverflow.com/questions/276706/what-are-bitwise-operators/276771#276771 –
Điều này rất phổ biến trong C và C++, nhưng tôi 'tò mò (như một người chưa thực hiện nhiều Java) là liệu nó có thành ngữ trong Java để sử dụng một số nguyên như một tập hợp các cờ boolean không? – caf
| là toán tử OR. Hai giá trị đó có thể là các cờ được gắn với 1 bit và giá trị kết quả là giá trị kiểu để sử dụng.
Với hầu hết mọi thứ, có một chút đường cong học tập. Nếu tôi đang học một ngôn ngữ mới, tôi sẽ giả định rằng | là một toán tử và sẽ tìm kiếm 'các toán tử Java'.
Đây là một bitwise OR, nó cung cấp phương tiện để bạn chuyển một số cờ cho thành phần SWT dưới dạng một int đơn, thay vì phải nạp quá nhiều loại với các phương thức setter.
Hai thuộc tính bạn liệt kê cho biết bạn có một hộp thoại hoặc cửa sổ khác sẽ được hiển thị một cách bình thường trên vỏ mẹ và sử dụng nút ok. Bạn có thể kết hợp nó với SWT.CANCEL để hiển thị nút OK và Hủy, ví dụ
Để trả lời câu hỏi của bạn về việc tìm hiểu nó, tôi sẽ tự hỏi mình có phải là biểu tượng hay người điều hành không. Điều đó một mình giúp tôi tìm ra những gì để tìm kiếm trong Google. Các loại biến được sử dụng cũng cung cấp cho tôi một đầu mối - đó là một toán tử đang làm việc trên các loại int.
Hy vọng điều đó sẽ hữu ích.
cảm ơn bạn đã đọc phần mà hầu hết mọi người bỏ qua !!! –
cảm ơn vì đã cho tôi biết bạn đánh giá cao điều đó! Dường như có rất nhiều người đăng bài nhanh chóng vì họ muốn trở thành người đầu tiên trả lời và nhận điểm nhanh chóng ... oh well. – weiji
Rất tiếc, Google là tệ hại tại các biểu tượng.Thay vào đó, tôi muốn bắt đầu bằng cách nhìn vào the Wikipedia page, và tìm kiếm trên đó cho "|", mà là tại địa chỉ:
- bitwise logic (~, &, |, ^)
và trang có một tổng quan khá tốt về những gì là gì và làm thế nào để sử dụng nó.
- 1. Polyline của Google Maps - Làm thế nào để xóa nó?
- 2. Làm thế nào để Chuyển đổi int [] để int [,] - C#
- 3. Qt 4.6 QLineEdit Style. Làm thế nào để tôi tạo kiểu viền màu xám để nó được làm tròn?
- 4. DLLImport Int ** - Làm thế nào để làm điều này nếu nó có thể được thực hiện
- 5. Làm thế nào để etherpad và Google Docs làm ChangeSets
- 6. Làm thế nào để chuyển đổi mảng int thành int?
- 7. Làm thế nào để đúc int để enum trong C + +?
- 8. Làm thế nào để đọc int không dấu trong Javascript?
- 9. Làm thế nào để nó tuyết trên Google, bằng cách gõ Cho nó tuyết
- 10. Làm cách nào để kéo và thả trong WPF trong ứng dụng "Metro Style" của tôi?
- 11. Làm thế nào để mặc định yếu tố p để "Normal" style trong ckeditor
- 12. Làm thế nào để đặt một sự kiện MouseDown trong một Style?
- 13. Làm thế nào để chuyển đổi một ASCII char thành giá trị int ASCII của nó?
- 14. làm thế nào để chuyển đổi int để UINT
- 15. Nếu tôi có một con trỏ void, làm thế nào để đặt một int vào nó?
- 16. Làm thế nào để chuyển đổi IntPtr để int
- 17. Float và Int Cả 4 Byte? Làm thế nào mà?
- 18. Làm thế nào để chuyển đổi int để QString?
- 19. Làm thế nào để chuyển đổi QString thành int?
- 20. Sử dụng: bộ sưu tập và: include_blank trong Formtastic. Làm thế nào để làm nó?
- 21. Làm thế nào để kiểm soát style sheets trong ASP.NET Chủ đề với StylePlaceHolder và Phong cách kiểm soát
- 22. Làm thế nào để sử dụng Webdriver Selenium để lấy giá trị của phần tử "style"
- 23. Làm thế nào để chuyển đổi Integer thành int?
- 24. Làm thế nào để làm cho nó ngắn hơn (Pythonic)?
- 25. Làm thế nào để biết kết thúc của mảng int *?
- 26. làm thế nào để lưu trữ NSDictionary trong NSUserdefaults và làm thế nào tôi có thể lấy từ nó
- 27. Làm thế nào để di chuyển từ .NET-style TDD sang Ruby?
- 28. Làm cách nào để chuyển đổi int? vào int
- 29. CABasicAnimation làm thế nào để làm cho nó dễ dàng
- 30. Làm thế nào để chuyển đổi System.Linq.Enumerable.WhereListIterator <int> thành Danh sách <int>?
Bạn không thể google, nhưng bạn sẽ có thể tìm thấy nó trong chỉ mục JLS. –
xem http://stackoverflow.com/questions/47981 –
@shsimsimulator: Tại sao thêm thẻ c và C++, khi chúng hoàn toàn không liên quan đến câu hỏi? Nếu bạn muốn nhấn vào câu hỏi, ít nhất hãy sử dụng các thẻ phong nha. –