Freecodecamp: Kode yang diberi komentar dianggap untuk validasi kode, bukan hanya untuk komentar!

Dibuat pada 31 Mei 2017  ·  15Komentar  ·  Sumber: freeCodeCamp/freeCodeCamp



[Menggunakan Objek untuk pencarian]


tautan untuk tantangan:
https://www.freecodecamp.com/challenges/using-objects-for-lookups

Deskripsi masalah


Dalam tantangan ini, saya harus menghasilkan versi objek dari pernyataan switch. Karena saya harus mengingat setiap anggota _'case 'dari switch_ untuk menghasilkan versi objek , saya telah mengomentari seluruh bagian sakelar dan mengetik ulang versi objek yang benar.
Padahal, saya belum bisa lulus ujian.
Ini karena uji coba
You should not use case, switch, or if statements

Selama mengomentari sakelar, itu seharusnya tidak memvalidasi penggunaan _switch_ dan menganggapnya hanya sebagai komentar.

Informasi Browser

  • Nama Browser, Versi: Google Chrome
  • Sistem Operasi: Windows 10
  • Seluler, Desktop, atau Tablet: Desktop

Kode Anda

// Setup
function phoneticLookup(val) {
  var result = "";

  // Only change code below this line
   var lookup = {
    "alpha":"Adams",
    "bravo":"Boston",
    "charlie":"Chicago",
    "delta":"Denver",
    "echo":"Easy",
    "foxtrot":"Frank"
    };

  result = lookup[val];

  /*
  switch(val) {
    case "alpha": 
      result = "Adams";
      break;
    case "bravo": 
      result = "Boston";
      break;
    case "charlie": 
      result = "Chicago";
      break;
    case "delta": 
      result = "Denver";
      break;
    case "echo": 
      result = "Easy";
      break;
    case "foxtrot": 
      result = "Frank";
  }
*/
  // Only change code above this line
  return result;
}

// Change this value to test
phoneticLookup("charlie");



Screenshot

freecodecamp

help wanted blocked on the roadmap bug

Komentar yang paling membantu

@ Saif-Shines Ya, kami menyadari hal ini sebagai masalah yang ada di situs web utama, dan kami kekurangan infrastruktur untuk memiliki parser yang ketat jika mungkin.

Satu-satunya cara saat ini adalah dengan menghapus komentar.

Semua 15 komentar

@ Saif-Shines Ya, kami menyadari hal ini sebagai masalah yang ada di situs web utama, dan kami kekurangan infrastruktur untuk memiliki parser yang ketat jika mungkin.

Satu-satunya cara saat ini adalah dengan menghapus komentar.

Kontributor potensial, ini perlu diselidiki di sini:
https://github.com/freeCodeCamp/freeCodeCamp/blob/staging/client/rechallenge/throwers.js#L16

/ cc @BerkeleyTrue

Pada tantangan pertama Basic Javascript, saya mengalami masalah serupa saat mencoba berkomentar:

// Use comments only when they are actually needed

/* Sometimes, using descriptive names for variables and functions is way better 
than leaving code smell all over your code */

Dalam hal ini, karena dalam komentar kedua saya, saya menggunakan kata "function", akan membuang:
Error: SyntaxError: Unsafe or unfinished function declaration

Mungkin menjalankan pengujian untuk contents.replace(/\/\*[\s\S]*\*\/|\/\/[^\n]*/gi,'')) alih-alih contents dapat menyelesaikan masalah itu? (artinya masalah umum, karena dalam kasus saya tes khusus ini masih akan gagal karena isinya kosong setelah mengganti komentar)

Tidak bisakah kita melakukan sesuatu seperti:
Node node = nodeList.item(i); if(node.getNodeType() == Node.COMMENT_NODE) { continue; } else { //do something }

Saya ingin menerima ini.

Saya tertarik dalam masalah ini, bisakah ini ditugaskan kepada saya dan dapatkah Anda mengarahkan saya ke file yang perlu diubah.

Karena tidak ada pembaruan tentang ini selama lebih dari seminggu, saya akan membahasnya. Semoga baik-baik saja dengan kalian @ Survivor75 dan @ knrt10

@raisedadead : Saya yakin solusinya jauh lebih sederhana daripada yang kita pikirkan.

Kami menjalankan pernyataan pada code yang merupakan string. Jadi mengapa kita tidak menjalankan regex pada string ini dan menghapus komentar sebelum digunakan untuk validasi?

Misalnya di - client/frame-runner.js , kami mengambil konten editor codemirror seperti

const editor = { getValue() { return source; } };
const code = source;

Alih-alih langsung mengirimkan kode apa adanya, saya akan menjalankan regex untuk menghilangkan komentar suka

const editor = { getValue() { return source; } };
const code = source.replace(/\/\*[\s\S]*?\*\/|[^\S]\/\/.*$/gm, '');

Ketika dilakukan dengan cara ini, runner pengujian tidak pernah menerima komentar dalam kode dan semuanya baik-baik saja.

Saya telah memvalidasi regex ini di sini - http://regexr.com/3ghvi

CATATAN:

  • Ini tidak mempertimbangkan komentar HTML karena ada beberapa tantangan di awal yang memvalidasi keberadaan komentar HTML.
  • Pola URL dikecualikan.
  • Karena ekspresi reguler ini menggantikan karakter yang mengarah ke // kami tidak akan mengganti komentar sebaris yang tidak ada di barisnya sendiri.

@adityaparab keren: +1:.
Saya hampir melupakannya ketika saya bertunangan dengan sesuatu yang lain.
Namun saya menemukan kode ini, jika Anda akan mengerjakan ini, lihat fungsi di bawah ini.
function stripComments ( code ) { return code . replace (/\/\/.*|\/\*[^]*?\*\// g , "") ; }

Ini akan menghapus kode yang dikomentari :)

Sayangnya satu-satunya solusi nyata di sini adalah menggunakan AST untuk pengujian. Saya telah membahas ini dengan @QuincyLarson tentang menambahkan dalam API yang mengekspos JS AST yang diproduksi oleh babel dan menambahkan API yang mirip dengan antarmuka plugin eslint. Ini mungkin sedikit meleset karena prioritasnya adalah melanjutkan react challenge dan kemudian menggeneralisasi cara challenge itu sendiri diimpor dari file.

Saya baru saja mengalami masalah ini dengan komentar yang mengandung kata "fungsi" ... Saya benar-benar bingung sampai seseorang di forum menjelaskan apa yang sedang terjadi. Semoga masalah ini segera teratasi! Mungkin harus ada beberapa pesan yang ditampilkan kepada pengguna yang memperingatkan mereka tentang masalah parser terkait komentar dalam tantangan?

Lihat juga:
https://forum.freecodecamp.org/t/javascript-tests-in-challenges-no-longer-working-correctly/190249

@SuperGeniusZeb Terima kasih telah melaporkan ini, dan mengonfirmasi langkah-langkah untuk mereproduksinya.

Saya menutup masalah ini karena sudah basi karena belum aktif belakangan ini. Jika menurut Anda ini masih relevan dengan platform yang baru diperbarui, harap jelaskan alasannya, lalu buka kembali.

@Tokopedia

Di situs yang diperbarui, komentar masih salah dibaca sebagai kode oleh uji tantangan. Ambil tantangan ini sebagai contoh:

https://learn.freecodecamp.org/responsive-web-design/css-grid/create-a-column-gap-using-grid-column-gap

Dengan menggunakan kode berikut, saya dapat lulus tes (yang memeriksa grid-column-gap harus disetel ke 20px ), meskipun grid-column-gap: 20px ada dalam komentar.

<style>
  .d1{background:LightSkyBlue;}
  .d2{background:LightSalmon;}
  .d3{background:PaleTurquoise;}
  .d4{background:LightPink;}
  .d5{background:PaleGreen;}

  .container {
    font-size: 40px;
    min-height: 300px;
    width: 100%;
    background: LightGray;
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    grid-template-rows: 1fr 1fr 1fr;
    /* add your code below this line */
    grid-column-gap: 10px;
    // grid-column-gap: 20px;
    /* add your code above this line */
  }
</style>

<div class="container">
  <div class="d1">1</div>
  <div class="d2">2</div>
  <div class="d3">3</div>
  <div class="d4">4</div>
  <div class="d5">5</div>
</div>

Harap buka kembali masalah ini.

@SuperGeniusZeb Bisakah Anda membuka edisi baru di https://github.com/freeCodeCamp/learn/issues ? Terima kasih banyak.

@raisedadead Saya baru saja membuat terbitan baru di sana:
https://github.com/freeCodeCamp/learn/issues/165

Apakah halaman ini membantu?
0 / 5 - 0 peringkat