ref:https://www.ruby-lang.org/en/documentation/quickstart/
#!/usr/bin/env ruby class MegaGreeter attr_accessor :names # Create the object def initialize(names = "World") @names = names end # Say hi to everybody def say_hi if @names.nil? puts "..." elsif @names.respond_to?("each") # @names is a list of some kind, iterate! @names.each do |name| puts "Hello #{name}!" end else puts "Hello #{@names}!" end end # Say bye to everybody def say_bye if @names.nil? puts "..." elsif @names.respond_to?("join") # Join the list elements with commas puts "Goodbye #{@names.join(", ")}. Come back soon!" else puts "Goodbye #{@names}. Come back soon!" end end end if __FILE__ == $0 mg = MegaGreeter.new mg.say_hi mg.say_bye # Change name to be "Zeke" mg.names = "Zeke" mg.say_hi mg.say_bye # Change the name to an array of names mg.names = ["Albert", "Brenda", "Charles", "Dave", "Engelbert"] mg.say_hi mg.say_bye # Change to nil mg.names = nil mg.say_hi mg.say_bye end
1. attr_accseeor :name
使 MegaGreeter.instance_methods false 的返回值(Array)多了 :id :id= 两项
mg.respond_to? :id 或 mg.respond_to?("id")
mg.respond_to? :id= 或 mg.respond_to?("id=") 为true
2. 使用对象的属性而非对象的类型决定执行方式
@names.respond_to?
3. __FILE__==$0
时间: 2024-12-21 00:48:33