Ruby 我可以做“吗?”#{file_name}";`更简单?

Ruby 我可以做“吗?”#{file_name}";`更简单?,ruby,string,Ruby,String,像这样编写“{file\u name}”而不仅仅是file\u name,看起来相当冗长 def write_hello(file_name) File.open("#{file_name}", "w") { |file| file.puts "Hello, world! I'm Ruby :)"} end 我能做些什么使它更干净 已更新 我只有ruby,所以我现在将文件名更新为文件名 您的代码可以工作,但实际上是糟糕的代码。事实上,它应该写成文件名,尽管Rubyist不会这样

像这样编写
“{file\u name}”
而不仅仅是
file\u name
,看起来相当冗长

  def write_hello(file_name)
    File.open("#{file_name}", "w") { |file| file.puts "Hello, world! I'm Ruby :)"}
  end
我能做些什么使它更干净

已更新


我只有ruby,所以我现在将
文件名
更新为
文件名

您的代码可以工作,但实际上是糟糕的代码。事实上,它应该写成
文件名
,尽管Rubyist不会这样命名变量

不过,最好写得短一些,比如

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

尽管您必须在字符串的末尾显式添加一个新行字符(如果需要的话)。

这是不必要的冗长

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。。。结束
表单,通常更容易理解和理解,但在其他方面与{…}表单等效。Ruby新手可能会对
{x:'y'}
{x | y'}
是多么的不同感到困惑,因此这避免了这里的歧义

没有必要孤立地引用某些东西。如果要附加文件扩展名,则需要这样做,如:

File.open("#{filename}.txt", "w") do |file|
  # ...
end
你可以这样称呼它:

write_hello(:example)

这将创建
example.txt

对不起,这是ruby中的第一次。仍然不知道一切是如何运作的。基本功能仍处于启用状态时喋喋不休……
write
不会添加换行符(与
put
)相切,但那些相同的命名约定将需要
write\u hello
而不是
writeHello
。坚持住黛雅!谢谢,只关注变量名。下次当你问自己“我能做x而不是y吗?”,你应该试一下:-)Stefan,很抱歉这个愚蠢的问题。我试过IntelliJ 2018.3,但它突出显示,工作异常。问这个问题很傻,现在看起来很傻,但那个时候对我来说很困惑。感谢您的~友好提醒~。谢谢;)在这方面,RubyMine更有用。