Biểu hiện mặt cười với bộ râu này là gì: Ủ <:] {%> Hay?


300

Tôi đã xem qua chương trình sau, nó biên dịch mà không có lỗi hoặc thậm chí không có cảnh báo:

int main(){
  <:]{%>; // smile!
}

Ví dụ sống.

Chương trình làm gì, và biểu hiện mặt cười đó là gì?


44
Tôi đã tặng một cái gì đó dọc theo những dòng này cho một lớp lập trình như một phần thưởng. Tôi xấu xa, tôi biết. Nó rất không thể tìm kiếm trên Google.
chris

57
Cắt bao quy đầu đẹp; Tôi nghe họ kiện bạn vì đã nói "không thể kết hợp".
matt

3
@matt Họ đã kiện sweeden: bbc.com/news/magazine-21956743
Edward

2
Bạn có thể xem xét việc thay đổi câu trả lời được chấp nhận?
nhahtdh

4
@Mysticial: Câu trả lời thú vị rất thú vị, nhưng vào cuối ngày, nó không thực sự giúp ích cho độc giả.
nhahtdh

Câu trả lời:


292

Đó là một lambda trống bằng cách sử dụng một máy ngụy trang. Lambdas bình thường không có râu.


354

Chương trình sử dụng các biểu đồ để thể hiện như sau:

[] {};

Đây là một biểu hiện lambda không làm gì cả. Các biểu tượng tương ứng có các tương đương:

<: = [
%> = }

Mặc dù ngày nay chúng không cần thiết, nhưng máy in rất hữu ích khi bàn phím của bạn thiếu một số phím nhất định cần thiết để sử dụng bộ ký tự nguồn cơ bản của C ++, cụ thể là bộ đồ họa. Sự kết hợp của các ký tự tạo nên một bản vẽ sơ đồ được xử lý như một mã thông báo duy nhất. Điều này lần lượt bù cho bất kỳ bàn phím được trang bị không đủ hoặc phần cứng hoặc phần mềm như vậy.


66

Chương trình đang sử dụng các sơ đồ , cho phép lập trình C ++ bằng bàn phím (hoặc mã hóa văn bản) có thể không có các ký tự mà C ++ thường sử dụng.

Mã giải quyết điều này:

int main(){
  []{}; // smile!
}

61
int main(){
  <:]{%>; // smile!
}

Về cơ bản, đó là một biểu thức Lambda ( biểu thức Lambda là một trong những tính năng của C ++ 11 ) bằng cách sử dụng các bản vẽ sơ đồ (cả bản gốc và bản dịch đều hoạt động trên C ++):

[] {};

Chỉ sử dụng máy in:

<:]<%}; 

<:]<%%>;

[:>{%>; // like my cubic hat?

[:><%};

[:><%%>;

Trộn chúng với Tricles:

<:??)<%??>; // popeye

??(:>{??>; // pirate
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.