21、用新方法扩展一些 Ruby 的内置类。
可以通过定义类并添加新方法来扩展 Ruby 的内置类,例如扩展 Array 类添加 mult 方法,代码如下:
方式一:
class Array
def mult
product = 1
self.each do |elem|
product = product * elem
end
product
end
end
puts [2,5,3].mult
# 输出 30
方式二:
class Array
def mult
self.reduce(1, :*)
end
end
puts [2,5,3].mult
# 输出 30
另外还可以扩展 Integer 类添加 double 方法,扩展 String 类添加 leet 方法等。
22、编写一个程序,允许你输入诸如“feed”和“walk”之类的命令,并在小龙对象上调用这些方法。假设存在一个 Dragon 类,该类有 feed 、 toss 、 walk 、 rock 、 put_to_bed 等方法,程序需要让用户为小龙命名,并且可以输入“exit”来退出程序。
以下是实现该功能的程序代码:
puts "What would you like to name your baby dragon?"
name = gets.chomp
dragon = Dragon.new(name)
while true
puts
puts "commands: feed, toss, walk, rock, put_to_bed, exit"
command = gets.chomp
if command == "exit"
break
elsif dragon.respond_to?(command) && !Object.new.respond_to?(command)
dragon.send(command)
else
puts "Huh? Please type one of the commands."
end
end
此程序首先让用户为小龙命名,接着进入一个无限循环,提示用户输入命令。若用户输入“exit”,程序会终止;若输入的是小龙对象支持的有效命令,程序会调用相应方法;若输入无效,会提示用户重新输入。
23、使用开放问答数据库的 API 获取问答题目,然后向用户提问。统计用户答对的数量,并在最后告知用户的答题情况。(确保你不会忽略 API 返回的响应代码。)
以下是实现该功能的 Ruby 代码:
require "net/http"
require "json"
# 可方便修改问题数量
num_questions = 1
url = URI("https://opentdb.com/api.php?amount

最低0.47元/天 解锁文章
1225

被折叠的 条评论
为什么被折叠?



