我在Ruby中创建一个快速的“银行”界面时遇到了一些麻烦。这纯粹是教育孩子们关于银行和编码的教育经验。
因此,在启动服务器之后,我将远程登录到它。从下面的代码中可以看出,唯一的命令是'exit'。但是,使用if
根本不起作用,只要输入'exit'(不带''),就会发生else
异常。
我发现使用unless
代替if
可以完美地运行,正如预期的那样。但是,如果我想要更多命令,最好使用传统的“if
,elseif
,else
等等。”流程。
那么为什么我的if
声明不起作用?
#!/usr/bin/ruby
require 'socket'
puts "Starting up server..."
server = TCPServer.new(2008)
while (session = server.accept)
Thread.start do
puts "DEBUG: Connection from #{session.peeraddr[2]} at #{session.peeraddr[3]}"
puts "DEBUG: Got input from client."
session.puts "\r\nWelcome to StudentUndernet Virtual Bank, #{session.peeraddr[2]}.\r\n Server time is #{Time.now}\r\n"
session.puts "\r\nStudentUndernet Virtual Bank:\r\n"
input = session.gets
puts "#{session.peeraddr[2]} has sent: " + input
if session.gets == "exit"
puts "DEBUG: Sending goodbye to #{session.peeraddr[2]}"
session.puts "\r\nStudentUndernet Virtual Bank: Goodbye.\r\n"
session.close
else
session.puts "SOMETHING ELSE HAPPENED!"
end
end
end
我知道这段代码可能非常“糟糕”,但请不要告诉我它!