Ruby:有没有办法创建一个程序,它可以通过双击打开,并且不会';你不能马上关门吗?

Ruby:有没有办法创建一个程序,它可以通过双击打开,并且不会';你不能马上关门吗?,ruby,Ruby,例如,如果我创建一个程序,上面写着“Hello world!”,它会立即打开和关闭,或者如果我创建一个程序,上面写着“Hello world!” puts "Enter some text!" response = gets.chomp puts "You said '#{response}'" 用enter键输入输入后,它将立即关闭 那么,我能在代码中加入什么东西来保持程序的开放性吗?我听说过这样的解决方案,比如在程序末尾添加get,但这对我来说并不管用。我也不想用命令提示符打开它,因为

例如,如果我创建一个程序,上面写着“Hello world!”,它会立即打开和关闭,或者如果我创建一个程序,上面写着“Hello world!”

puts "Enter some text!"

response = gets.chomp

puts "You said '#{response}'"
用enter键输入输入后,它将立即关闭


那么,我能在代码中加入什么东西来保持程序的开放性吗?我听说过这样的解决方案,比如在程序末尾添加
get
,但这对我来说并不管用。我也不想用命令提示符打开它,因为双击它似乎可以工作,而不是程序突然关闭

你所说的开放是什么意思?可以打开文件,但不能打开程序:程序运行。如果您想让程序继续运行,只需在到达最后一条语句之前使用无休止的循环即可

说到这里,您可能会关心接口。基本上有两种界面:文本界面和图形界面。两者都有优点和缺点。如果您喜欢图形界面,您可能会对GUI gem感兴趣,例如
gtk2
/
gtk3
。您可以使用它们弹出窗口,其中包含输入框、按钮等,这些窗口会一直运行,直到用户执行关闭它们的操作为止

但您似乎对文本接口感兴趣。在这种情况下,让我向您宣布,Ruby中有一个优秀的文本接口平台:
irb

新手经常犯重新设计REPL接口的错误,比如让主循环总是通过
询问用户想要做什么,并给出选项a、B、C,…,或者允许用户键入命令等

多亏了
irb
,您的程序通常不需要主循环。您可以简单地定义方法并让用户在
irb
中与它们交互,而不是将
get
与一组命令一起使用。为了提供一个具体的例子,新手程序员可能会决定编写以下程序:

loop do
  puts "Enter some text!"
  response = gets.chomp
  puts "you said '#{response}'"
end
这个程序提供了它自己的REPL循环,可以回显您键入的任何内容。更有经验的程序员会意识到这是对轮子的重新发明,只需定义一个方法
\echo

def echo text
  puts "you said '#{text}'"
end

echo "hello"
#=> you said 'hello'

您的程序“结束”,但irb
REPL继续运行,您可以在那里输入
echo“something”
任意次数。这个故事的寓意是,在Ruby中,除非您知道自己在做什么,否则不要重新设计REPL接口。其他具有附加功能的良好文本界面是
pry
gem-install-pry
)。

您的程序做什么?你希望它如何结束?@boris学习OOP设计原理、模式的好书是什么?