mu *_*ort 11
+''是一元+应用于字符串文本操作''和一元+的字符串:
+str ? str (mutable)
如果字符串被冻结,则返回重复的可变字符串。如果字符串未冻结,则返回字符串本身。
通常将# frozen_string_literal: trueRuby 文件放入,以便所有字符串文字(例如'')都被冻结(即不可变)。So''通常是一个不可变的字符串,但它+''是''.
这意味着:
cta = send(state + '_cta') || +''
Run Code Online (Sandbox Code Playgroud)
应该在cta.
顺便说send(state + '_cta')一句,如果应该给你一个Stringornil那么你也可以说:
cta = send(state + '_cta').to_s
Run Code Online (Sandbox Code Playgroud)
因为NilClass#to_s给你一个解冻的''。如果send(state + '_cta')可以返回false那么+''和to_s版本当然是不同的。