相关疑难解决方法(0)

Ruby中的字符串连接

我正在寻找一种更优雅的方式来连接Ruby中的字符串.

我有以下几行:

source = "#{ROOT_DIR}/" << project << "/App.config"
Run Code Online (Sandbox Code Playgroud)

这样做有更好的方法吗?

就此而言,<<和之间的区别是+什么?

ruby string-concatenation

351
推荐指数
10
解决办法
54万
查看次数

如何在Ruby中进行"后期"字符串插值

>> string = '#{var}'
=> "\#{var}"

>> proc = Proc.new { |var| string }
=> #<Proc:0xb717a8c4@(pry):6>

>> proc.call(123)
=> "\#{var}"
Run Code Online (Sandbox Code Playgroud)

不是我想要的.双引号string导致显而易见的结果undefined local variable.

ruby

21
推荐指数
3
解决办法
5028
查看次数

Ruby单引号和双引号

我最近一直使用Ruby进行编码,并且来自Python,据我所知,单引号和双引号对代码的工作方式没有任何影响.

我转到Ruby看看它是如何工作的,并调查Ruby和Python之间的相似之处.

我曾使用单引号字符串并注意到这一点:

hello = 'hello'
x = '#{hello} world!'
puts x
Run Code Online (Sandbox Code Playgroud)

它返回'#{hello} world!'而不是'hello world!'.

注意到这一点后,我尝试了双引号,问题得到解决.现在我不确定为什么会这样.

单引号和双引号会改变这个还是因为我的编辑器(Sublime text 3)?如果它在以前的版本中工作方式不同,我也使用Ruby 2.0版.

ruby

5
推荐指数
1
解决办法
1937
查看次数

奇怪的Ruby语法?

我正在ruby-lang.org上做Ruby 20分钟的教程,我发现这个代码搞乱了irb:

irb(main):015:0> def h(name)
irb(main):016:1> puts "Hello #{name}!"
irb(main):017:1> end
Run Code Online (Sandbox Code Playgroud)

根据解释,该#{name}部分只是将变量添加到字符串?我认为这是一种奇怪而冗长的编写方式所以我只是想我会尝试"Hello" + name并且它的工作方式完全相同..

我在谷歌周围试图找到一个意义#{},我找不到任何谈论它,所以我想我会问社区..有什么区别?有吗?

提前致谢!

ruby string hash

2
推荐指数
1
解决办法
523
查看次数

这是什么意思?

如以下代码来自"为什么的尖锐指南":

def wipe_mutterings_from( sentence ) 
     unless sentence.respond_to? :include?
         raise ArgumentError, "cannot wipe mutterings from a #{ sentence.class }"
     end
     while sentence.include? '('
         open = sentence.index( '(' )
         close = sentence.index( ')', open )
         sentence[open..close] = '' if close
     end
end
Run Code Online (Sandbox Code Playgroud)

ruby

2
推荐指数
1
解决办法
207
查看次数

.map 将数组映射到字符串中

使用时返回一个数组.map

<li class="mix <%= p.sectors.map {|s| "#{s.name}"} %> all">
Run Code Online (Sandbox Code Playgroud)

给出数组:

["Content Management System", "Web Design", "Web Development"]
Run Code Online (Sandbox Code Playgroud)

目前我认为返回的结果是:

<li class="mix ["Content Management System", "Web Design", "Web Development"] all mix_all" </li>
Run Code Online (Sandbox Code Playgroud)

我想使用每个 s.name 作为类名,但使用时遇到问题:

<li class="mix <%= p.sectors.map {|s| "#{s.name}"}.join(" ") %> all">
Run Code Online (Sandbox Code Playgroud)

其中每个单词都被视为一个单独的类,因此网页设计现在是两个类而不是一个类。

有没有办法将网页设计作为一个类,或者我是否需要使用不同的命名约定(例如网页设计)才能完成这项工作?

ruby arrays dictionary ruby-on-rails

1
推荐指数
1
解决办法
1631
查看次数