Techioz Blog

Rubyではどういう意味があるのでしょうか? [重複]

概要

Ruby on Rails GitHub リポジトリのプル リクエストで次のコード (簡略化) を見つけました。

def foo(string)
  return +"" if string.empty?

  # ...
end

そして、+“” は何を意味するのでしょうか?

  • プレフィックスは、返された空の文字列 “” にどのような違いをもたらしますか?そして、単に “” またはこの例のその時点では空である文字列 string の代わりに +“” を返す利点は何でしょうか?

解決策

+’’ を指定すると、ファイル内の文字列リテラルが #frozen_string_literal: true マジック コメントなどによって暗黙的にフリーズされているかどうかに関係なく、返された文字列がフリーズされません。

String#+@ に関するドキュメントからの引用:

例:

''.frozen?     #=> false
(+'').frozen?  #=> false

ただし、暗黙的に凍結された文字列の場合は次のようになります。

# frozen_string_literal: true

''.frozen?     #=> true
(+'').frozen?  #=> false

同様に、作成者は、凍結される可能性があるため、単に空の文字列 string を返さないことにしました。 +’’ を返すと、環境や入力がどのようなものであっても、凍結されていない空の文字列が返されます。

覚えておくべきニーモニックは摂氏温度単位 (°C) です。水の凝固点は0℃と定義されています。これは、負の符号が付いたすべての値が氷点未満であるため、凍結されることを意味します。正の符号付き値は固定されません。