我可以简化`“#{file_name}”`吗?

时间:2019-03-27 03:54:21

标签: ruby string

写这样的n - to_pick而不是"#{file_name}"看起来很冗长。

file_name

我怎样做才能使其更清洁?

已更新

我只有红宝石naming conventions,所以现在将 def write_hello(file_name) File.open("#{file_name}", "w") { |file| file.puts "Hello, world! I'm Ruby :)"} end 更新为fileName

2 个答案:

答案 0 :(得分:5)

那是不必要的冗长。

x = "test"
"#{x}"
# => "test"

在您的情况下,这实际上是同一件事。

此代码的Ruby惯用版本如下:

def write_hello(filename)
  File.open(filename, "w") do |file|
    file.puts "Hello, world! I'm Ruby :)"
  end
end

这使用多行do ... end格式,通常易于理解和理解,但与{ ... }格式等效。新的Ruby人士可能对{ x: 'y' }{ |x| 'y' }截然不同的事物有些困惑,因此避免了在那里的歧义。

没有必要单独引用某些内容。如果您想附加文件扩展名,例如:

File.open("#{filename}.txt", "w") do |file|
  # ...
end

在哪里称呼您

write_hello(:example)

这将创建example.txt

答案 1 :(得分:2)

您的代码有效,但实际上是错误的代码。确实,它应该写为fileName,尽管Rubyist不会像骆驼一样命名一个变量。

但是,最好写得短些,例如

File.write(fileName, "Hello, world! I'm Ruby :)")

如Stefan所述,尽管如果需要,则必须在字符串的末尾显式添加换行符。