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℃と定義されています。これは、負の符号が付いたすべての値が氷点未満であるため、凍結されることを意味します。正の符号付き値は固定されません。