Freecodecamp: コメントされたコードは、単なるコメントではなく、コード検証の対象と見なされます。

作成日 2017年05月31日  ·  15コメント  ·  ソース: freeCodeCamp/freeCodeCamp



[ルックアップにオブジェクトを使用する]


チャレンジへのリンク:
https://www.freecodecamp.com/challenges/using-objects-for-lookups

問題の説明


このチャレンジでは、switchステートメントのオブジェクトバージョンを作成する必要がありました。 オブジェクトバージョンを作成するには、switch_の各_'case 'メンバーを覚えておく必要があったため、スイッチ部分全体をコメントアウトして、正しいオブジェクトバージョンを再入力しました。
しかし、私はテストに合格することができませんでした。
これはのテストチェックによるものです
You should not use case, switch, or if statements

スイッチをコメントアウトする際に、_switch_の使用法を検証してはならず、コメントと見なす必要があります。

ブラウザ情報

  • ブラウザ名、バージョン:Google Chrome
  • オペレーティングシステム:Windows 10
  • モバイル、デスクトップ、またはタブレット:デスクトップ

あなたのコード

// 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");



スクリーンショット

freecodecamp

help wanted blocked on the roadmap bug

最も参考になるコメント

@ Saif-Shinesはい、これはメインWebサイトの既存の問題として認識されており、可能であれば、厳密なパーサーを持つためのインフラストラクチャが不足しています。

現在のところ唯一の方法は、コメントを削除して先に進むことです。

全てのコメント15件

@ Saif-Shinesはい、これはメインWebサイトの既存の問題として認識されており、可能であれば、厳密なパーサーを持つためのインフラストラクチャが不足しています。

現在のところ唯一の方法は、コメントを削除して先に進むことです。

潜在的な貢献者、これはこのあたりで調査する必要があります:
https://github.com/freeCodeCamp/freeCodeCamp/blob/staging/client/rechallenge/throwers.js#L16

/ cc @BerkeleyTrue

Basic Javascriptの最初のチャレンジで、コメントしようとしたときに同様の問題が発生しました。

// 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 */

この場合、2番目のコメントで「関数」という単語を使用しているため、次のようになります。
Error: SyntaxError: Unsafe or unfinished function declaration

たぶんためのテスト実行中のcontents.replace(/\/\*[\s\S]*\*\/|\/\/[^\n]*/gi,''))の代わりにcontentsその問題を解決するだろうか? (私の場合、コメントを置き換えた後、コンテンツが空であるため、この特定のテストはまだ失敗するため、一般的な問題を意味します)

次のようなことはできません:
Node node = nodeList.item(i); if(node.getNodeType() == Node.COMMENT_NODE) { continue; } else { //do something }

これを引き受けたいと思います。

私はこの問題に興味があります。これを私に割り当てることができ、変更が必要なファイルに私を導くことができます。

これについては1週間以上更新がないので、取り上げます。 @ Survivor75@ knrt10の皆さん、大丈夫だといいのですが

@raisedadead :解決策は私たちが考えていたよりもずっと簡単だと思います。

文字列であるcodeアサーションを実行します。 では、検証に使用する前に、この文字列に対して正規表現を実行してコメントを削除しないのはなぜですか?

たとえば、- client/frame-runner.jsでは、次のようなコードミラーエディタのコンテンツをフェッチします。

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

コードをそのまま渡す代わりに、正規表現を実行して次のようなコメントを削除します。

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

このようにすると、テストランナーはコードでコメントを受け取ることはなく、すべて問題ありません。

ここでこの正規表現を検証しました-http://regexr.com/3ghvi

注意:

  • HTMLコメントの存在を検証するいくつかの課題が最初にあるため、これはHTMLコメントを考慮しません。
  • URLパターンは除外されます。
  • この正規表現は//につながる文字を置き換えるため、独自の行に存在しないインラインコメントは置き換えません。

@adityaparabそのクール:+1
何か他のことに従事したので、私はそれをほとんど忘れていました。
しかし、私はこのコードを思いついたので、これに取り組むつもりなら、以下の関数を見てください。
function stripComments ( code ) { return code . replace (/\/\/.*|\/\*[^]*?\*\// g , "") ; }

これにより、コメントされたコードが削除されます:)

残念ながら、ここでの唯一の実際の解決策は、テストにASTを使用することです。 これについては、 @ QuincyLarsonと、babelによって生成されたJS ASTを公開するAPIを追加し、eslintのプラグインインターフェイスに類似したAPIを追加することについて話し合いました。 優先順位はreactチャレンジに進み、チャレンジ自体がファイルからインポートされる方法を一般化することであるため、これは少しずれている可能性があります。

「関数」という単語を含むコメントでこの問題に遭遇しました...フォーラムの誰かが何が起こっているのかを説明するまで、私は本当に混乱しました。 この問題がすぐに修正されることを願っています! おそらく、チャレンジのコメントに関するパーサーの問題についてユーザーに警告するメッセージが表示されるはずですか?

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

@SuperGeniusZebこれを報告し、それを再現する手順を確認していただきありがとうございます。

この問題は最近アクティブになっていないため、古いものとしてクローズします。 これがまだ新しく更新されたプラットフォームに関連していると思われる場合は、その理由を説明してから、再度開いてください。

@QuincyLarson

更新されたサイトでは、チャレンジテストによってコメントがコードとして誤って読み取られています。 この課題を例にとってみましょう。

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

次のコードを使用すると、 grid-column-gap: 20pxがコメントに含まれていても、テストに合格できます( grid-column-gap20px設定されているかどうかを確認します)。

<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>

この号を再度開いてください。

@SuperGeniusZebhttps://github.com/freeCodeCamp/learn/issuesで新しい問題を開いていただけますか? どうもありがとう。

@raisedadeadそこで新しい問題を作成しました:
https://github.com/freeCodeCamp/learn/issues/165

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

trashtalka3000 picture trashtalka3000  ·  3コメント

QuincyLarson picture QuincyLarson  ·  3コメント

raisedadead picture raisedadead  ·  3コメント

kokushozero picture kokushozero  ·  3コメント

DaphnisM picture DaphnisM  ·  3コメント