0

次のように入力される te​​xt_parts 変数があります。

text_parts = r[:database_field].split('.')

text_parts には、データベース内で実際にピリオドで分割された単語の配列が含まれています。以下のステートメントは Ruby で何を意味しますか? 古いコードベースで見つけたので、その機能の説明が必要です。

text_parts[-3].nil? ? "" : text_parts[-1*text_parts.length..-3].join('.')

前もって感謝します。

4

1 に答える 1

2

最初の要素text_partsから最後から 3 番目までの要素を取得し、それらを結合します"."(text_parts要素が 3 つ未満の場合は、空の文字列を返します)。

これは明らかに専門家 (資格のある人) によって書かれたコードではありません。とても悪い事だ。

  • まず、 のすべての要素が文字列であることが保証されているため、一部の要素がまたはtext_partsである場合を考慮する必要はありません。したがって、使用する必要はありません。条件は、2 つの場合が入れ替わる場合があります。nilfalsenil?text_parts[-3] ? ... : ...
  • 第二に、-1*text_parts.length簡単に書く必要があります0
  • text_parts第 3 に、が 3 よりも短い場合はtext_parts[0..-3]空の配列になるため、そもそも条件は必要ありませんでした。

要するに、これを書くためのより良い方法は次のとおりです。

text_parts[0..-3].join(".")
于 2013-05-06T19:38:18.500 に答える