Trong group có ai sử dụng '?:' trong code không ạ?

Cho em khảo sát thử trong group có ai sử dụng ?: trong code không ạ?

VD: thay vì

 if (x>y) larger=x;
 else larger=y;

thì

`larger=(x>y)?x:y`

Em khảo sát thử code trên mạng em thấy không ai xài ?: cả, mặc dù chương trình vẫn dạy (tất nhiên là có thi)

Ý bạn hỏi là vì sao ít dùng ?: hay là bạn biết rồi và đang khảo sát cộng đồng? Hay cả hai?

1 Like

Một nhóm người không dùng không có nghĩa là không có ai dùng.

Code mình từ 31/12/2017:

Thế đây là câu hỏi hay câu gì?

Đây là một toán tử thông dụng, mình không biết nguồn “khảo sát” của bạn ở đâu nhưng mình thấy ở đâu họ cũng dùng.

1 Like

Dạ em thử search trên mấy trang như hackerrank, topcoder, vài project trên mạng thì không thấy ạ.

Cá nhân mình thì dùng cực kì nhiều, đặc biệt trong Javascript (khởi tạo các field cho object).
Cách mà bạn dùng để khảo sát là gì?

1 Like

Mới có vài project vặt mà đã đánh đồng là không có ai dùng :expressionless:

Search kiểu gì? Đưa bằng chứng cho mình xem thử.

Mới dạo qua github:

Tìm if:

Tìm ?:

Surprise :joy:

1 Like

Thách tìm được bằng kí tự đặc biệt ở trên Github :joy:

1 Like

Mấy trang đó là competitive programming mà (kiểu thi thố), mà thi thố thì làm kiểu nào chẳng được, if ... else cũng được, ? : cũng được, miễn là thỏa mãn để bài. Còn làm việc thực tế thì vừa phải giải quyết yêu cầu bài toán vừa phải code sạch, gọn, dễ bảo trì, dễ đọc dễ nhìn, sử dụng if - else luôn dài dòng hơn ? : mà hiệu quả cũng như nhau nên chả ai dùng trong production cả (tất nhiên có ngoại lệ).

Hình như GitHub không cho phép tìm các kí tự đặc biệt :joy:

1 Like

hackkerrank ko có ?: thì mình tự viết ?:

ví dụ https://www.hackerrank.com/challenges/grading/problem

giải bằng 1 dòng thôi:

int main()
{
    int n; cin >> n;
    while (cin >> n) cout << (n >= 38 && n - n/5*5 > 2 ? n/5*5 + 5 : n) << "\n";
}

qua bên editorial xem chúng nó giải 5-20 dòng thấy phát mệt

1 Like

Dùng mod :slight_smile:

while (cin >> n) cout << (n >= 38 && n % 5 >= 3 ? n + 5 - n % 5 : n) << '\n';

Mà HR chỉ chấm output chứ ko chấm code nhỉ.

2 Likes

Competitive Programming là thế anh ơi =)) Có bao giờ máy chấm chấm code đâu =))

#OFF_TOPIC

mình không dùng ? với ý là toán tử 3 ngôi như bạn nghĩ Mà mình dùng để biểu thị 1 null trong collection như

animation = gameObject.getComponent<?>();

1 bài ez 1 dòng nữa nè: https://www.hackerrank.com/challenges/birthday-cake-candles/problem

int n, c, m=0; cin >> n;
for (; cin >> n; n > m ? (m = n, c = 1) : (n == m ? c++ : 0)); //1 dòng
cout << c;

?: xài tá lả đấy thôi :smiling_imp:

1 Like

Nhớ ko lầm có 1 trang buộc bạn phải viết code cho một hàm chứ ko phải là viết cả chương trình.

1 Like

Chuẩn Codefight rồi anh ơi =))

1 Like

Hi Thong Nguyen Thanh.

  1. Có.
  2. Bạn hỏi làm gì ?
  1. Có dùng
  2. Cái đó gọi là ternary operator

Hơi bị lạm dụng tí :grin:

Mấy trang kiểu thi thố cũng chỉ cần đúng kết quả, đủ thời gian quy định là pass chứ không ai quan tâm đến code. Nên xài if - else hay ? : đều được. Chắc bạn xem vài bài giải trên hackerrank rồi phán mấy trang này không xài ? :

1 Like

Cái này dùng rất nhiều nhé. Điển hình trong React.

{
    condition
        ? <ComponentA>
        : <ComponentB>
}

Hay nodejs

const mongoURI = process.env.NODE_ENV === "production" ? <productionURI> : <localhost> 

Hoặc những nơi cần check logic nhiều mà điều kiện lẫn lệnh con ngắn thì dùng hết. Bạn chưa gặp vì bạn CODE CHƯA ĐỦ NHIỀU thôi.

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?