Freecodecamp: Bug dalam Tantangan: Gunakan Operator Bersyarat Ganda (Ternary).

Dibuat pada 22 Mei 2020  ·  16Komentar  ·  Sumber: freeCodeCamp/freeCodeCamp


Jelaskan masalah Anda dan cara memperbanyaknya:
Bug - Uji kode di bawah ini gagal dengan kesalahan: checkSign harus menggunakan beberapa operator bersyarat.

function checkSign(num) {
  return (num!==0) ?(num>0) ? "positive" 
    : "negative" 
    : "zero";
}


console.log(checkSign(10));
console.log(checkSign(-10));
console.log(checkSign(0));

Tangkapan Layar -1:
image

Tangkapan layar - 2:
image

Bagaimana mereproduksinya.
Alih-alih Error: "checkSign harus menggunakan beberapa operator bersyarat."
Kesalahan seharusnya: Menggunakan beberapa operator terner di bagian pernyataan-jika-benar dari operator terner bukanlah praktik terbaik.

(Meningkatkan kejelasan pesan kesalahan)

Tambahkan Tautan ke halaman yang bermasalah:
Tautan ke Tantangan ;
Tautan ke posting saya melaporkan bug di forum:

first timers only help wanted learn

Komentar yang paling membantu

"Ini adalah praktik terbaik untuk memformat beberapa operator bersyarat sehingga setiap kondisi berada pada baris terpisah, seperti yang ditunjukkan dalam contoh, agar mudah dibaca."

Saya akan menambahkan catatan serupa.

Semua 16 komentar

Saya setuju bahwa beberapa penyesuaian masuk akal. Saya akan membantu jika kami dapat menangkap fakta bahwa pengujian gagal jika a) Anda tidak menggunakan beberapa terner atau b) terner tidak dalam format yang diharapkan.

Saya tidak berpikir ini yang diminta tantangan: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator

Ini adalah kode dari dokumen:

function example(…) {
    return condition1 ? value1
         : condition2 ? value2
         : condition3 ? value3
         : value4;
}

Apa yang telah Anda bangun adalah:

function checkSign(num) {
  if (num!==0) {
    if (num>0) {
      return "positive";
    } else {
      return "negative";
    }
  } else {
    return "zero";
  }
}

Saya setuju, Anda telah _menyelesaikan_ tugas. Namun, logika implementasi yang diharapkan adalah dalam bentuk:

function findGreaterOrEqual(a, b) {
  if (a === b) {
    return "a and b are equal";
  }
  else if (a > b) {
    return "a is greater";
  }
  else {
    return "b is greater";
  }
}

Jadi, mungkin kita harus mengubah instruksi tantangan menjadi lebih spesifik dengan formatnya ...

Saya tidak berpikir ini yang diminta tantangan: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator

Ini adalah kode dari dokumen:

function example(…) {
    return condition1 ? value1
         : condition2 ? value2
         : condition3 ? value3
         : value4;
}

Apa yang telah Anda bangun adalah:

function checkSign(num) {
  if (num!==0) {
    if (num>0) {
      return "positive";
    } else {
      return "negative";
    }
  } else {
    return "zero";
  }
}

Saya setuju, Anda telah _menyelesaikan_ tugas. Namun, logika implementasi yang diharapkan adalah dalam bentuk:

function findGreaterOrEqual(a, b) {
  if (a === b) {
    return "a and b are equal";
  }
  else if (a > b) {
    return "a is greater";
  }
  else {
    return "b is greater";
  }
}

Jadi, mungkin kita harus mengubah instruksi tantangan menjadi lebih spesifik dengan formatnya ...

Pak, harap diperhatikan: repositori ini adalah Free Code Camp . Terimakasih atas balasan anda.

@FelixBoscoJ , haha. Ya, saya sangat sadar. Saya menautkan ke dokumentasi Mozilla untuk mengambil contoh Beberapa Operator Ternary Bersyarat.

Maksud saya masih sepenuhnya valid.

@FelixBoscoJ , haha. Ya, saya sangat sadar. Saya menautkan ke dokumentasi Mozilla untuk mengambil contoh Beberapa Operator Ternary Bersyarat.

Maksud saya masih sepenuhnya valid.

`` js
function checkSign (num) {
return (num! == 0)? (num> 0)? "positif"
: "negatif"
: "nol";
}

console.log (checkSign (10));
console.log (checkSign (-10));
console.log (checkSign (0));

`` ''
Silakan coba kode di atas dalam tantangan ini. Silakan periksa apa yang dibutuhkan untuk lulus tantangan.

@FelixBoscoJ , saya punya, dan saya mengerti persis mengapa masalah ini dibuat. Saya menunjukkan bahwa format solusi Anda tidak seperti yang diharapkan, yang terlihat jelas dalam contoh yang diberikan dalam pelajaran:

function checkSign(num) {
  if (num!==0) {
    if (num>0) {
      return "positive";
    } else {
      return "negative";
    }
  } else {
    return "zero";
  }
}

Saya setuju, Anda telah menyelesaikan tugas. Namun, logika implementasi yang diharapkan adalah dalam bentuk:

function findGreaterOrEqual(a, b) {
  if (a === b) {
    return "a and b are equal";
  }
  else if (a > b) {
    return "a is greater";
  }
  else {
    return "b is greater";
  }
}

Solusi Anda tidak mengandung logika else if .

@FelixBoscoJ , saya punya, dan saya mengerti persis mengapa masalah ini dibuat. Saya menunjukkan bahwa format solusi Anda tidak seperti yang diharapkan, yang terlihat jelas dalam contoh yang diberikan dalam pelajaran:

function checkSign(num) {
  if (num!==0) {
    if (num>0) {
      return "positive";
    } else {
      return "negative";
    }
  } else {
    return "zero";
  }
}

Saya setuju, Anda telah menyelesaikan tugas. Namun, logika implementasi yang diharapkan adalah dalam bentuk:

function findGreaterOrEqual(a, b) {
  if (a === b) {
    return "a and b are equal";
  }
  else if (a > b) {
    return "a is greater";
  }
  else {
    return "b is greater";
  }
}

Solusi Anda tidak mengandung logika else if .

Pak syarat untuk memenangkan challenge adalah:

Gunakan beberapa operator bersyarat di fungsi checkSign untuk memeriksa apakah suatu angka positif, negatif atau nol.

Kita harus Menggunakan Operator Bersyarat Ganda ( Ternary ).

Mungkin pesan kesalahan harus "... beberapa operator bersyarat dalam format yang direkomendasikan."

Dan mungkin menambahkan catatan di sepanjang baris "Ini adalah praktik terbaik untuk memformat beberapa operator bersyarat sehingga setiap kondisi berada pada baris terpisah, seperti yang ditunjukkan dalam contoh, agar mudah dibaca".

"Ini adalah praktik terbaik untuk memformat beberapa operator bersyarat sehingga setiap kondisi berada pada baris terpisah, seperti yang ditunjukkan dalam contoh, agar mudah dibaca."

Saya akan menambahkan catatan serupa.

Tutup? Apakah pembaruan pada deskripsi digabungkan?

@ Sky020 Ini tidak mungkin untuk mengimplementasikan logika if / else if / else menggunakan Operator terner. Tapi tugas itu bisa diselesaikan.

Saya setuju, Anda telah menyelesaikan tugas. Namun, logika implementasi yang diharapkan adalah dalam bentuk:

 function findGreaterOrEqual(a, b) {
   if (a === b) {
     return "a and b are equal";
   }
   else if (a > b) {
     return "a is greater";
   }
   else {
     return "b is greater";
   }
 }

Tidak, logika yang diimplementasikan yang diharapkan adalah dalam bentuk:
`` js
function findGreaterOrEqual (a, b) {

jika (a === b) {
mengembalikan "a dan b adalah sama";
}
lain {
jika (num> 0) {
kembali "positif";
} lain {
mengembalikan "negatif";
}
}
}

``

@Bayu_joo

Solusi yang diharapkan (satu dari 6, sangat mirip dengan jawaban akhir Anda):

function checkSign(num) {
  return (num > 0) ? "positive" 
    : (num < 0) ? "negative"
    : "zero";
}

Versi if-else

function checkSign(num) {
  if (num > 0) {
    return "positive";
 } else if (num < 0) {
    return "negative";
 } else {
    return "zero";
 } 
}

Terner, atau beberapa terner, selalu dapat ditulis dengan if-else. Tantangan dan deskripsinya akurat. Kami hanya ingin menambahkan satu atau dua komentar klarifikasi untuk menekankan pemformatan praktik terbaik agar mudah dibaca.

Sudahlah.

Sepertinya saya menambahkan komentar klarifikasi adalah solusi terbaik. Jadi, biarkan ini terbuka sampai PR digabungkan.

Saya ingin melompat ke sini, jika memungkinkan. Saya pemula tetapi sangat bersemangat untuk belajar!

Lakukan saja, @jasnkwcz. Ini harus menjadi masalah yang bagus untuk pemula.

Saya sarankan untuk melihat panduan kontribusi , dan jika Anda mengalami kebuntuan, tanyakan di ruang obrolan kontributor

Apakah halaman ini membantu?
0 / 5 - 0 peringkat