Ruby 前缀不为空时为字符串加前缀的简洁方法

Ruby 前缀不为空时为字符串加前缀的简洁方法,ruby,Ruby,有没有一种较短的方法来完成以下操作 foo = config.include?(:bar) ? "#{bar}.baz" : "baz" 我正在寻找一个可读的单行程序,如果变量存在(假设它是字符串),它会附加一个变量和一个分隔符 config是一个散列。您可以这样做: foo = "#{"bar." if config.include?(:bar)}baz" foo = [bar, 'baz'].compact.join('.') 如果bar为nil,则compact

有没有一种较短的方法来完成以下操作

foo = 
  config.include?(:bar) ?
    "#{bar}.baz" :
    "baz"
我正在寻找一个可读的单行程序,如果变量存在(假设它是字符串),它会附加一个变量和一个分隔符

config
是一个散列。

您可以这样做:

foo = "#{"bar." if config.include?(:bar)}baz"
foo = [bar, 'baz'].compact.join('.')
如果
bar
为nil,则
compact
将从数组中删除它,并且不会添加分隔符。

您可以执行以下操作:

foo = [bar, 'baz'].compact.join('.')

如果
bar
为nil,则
compact
将从数组中删除它,并且不会添加分隔符。

这与此不同。config.include?可能比nilYes更有意义,我知道。可能我假设得太多了。在我的情况下,
bar
如果没有定义,它总是
nil
。这不是一回事。config.include?可能比nilYes更有意义,我知道。可能我假设得太多了。在我的情况下,
bar
如果没有定义,它将始终是
nil
。这看起来很短,对我来说可读写什么(类)
config
。不要让读者猜。你的标题和问题似乎不匹配。这看起来很简短,我可以阅读,写下什么是(类)
config
。不要让读者猜。你的题目和问题似乎不匹配。