输入与Module

来源:互联网 发布:mac识别不了u盘启动盘 编辑:程序博客网 时间:2024/06/05 21:03

ruby的输入

print "How old are you? "age = gets.chomp()print "How tall are you? "height = gets.chomp()print "How much do you weigh? "weight = gets.chomp()puts "So, you're #{age} old, #{height} tall and #{weight} heavy."

为什么使用的的print 而非 putsprint不会产生新行,puts会产生新行


 str.chomp(separator=$/) → new_str

Returns a new String with the given record separator removed from the end of str (if present). If $/ has not been changed from the default Ruby record separator, then chomp also removes carriage return characters (that is it will remove \n, \r, and \r\n). If $/ is an empty string, it will remove all trailing newlines from the string.

Module

require 'open-uri'open("http://www.ruby-lang.org/en") do |f|  f.each_line {|line| p line}  puts f.base_uri         # <URI::HTTP:0x40e6ef2 URL:http://www.ruby-lang.org/en/>  puts f.content_type     # "text/html"  puts f.charset          # "iso-8859-1"  puts f.content_encoding # []  puts f.last_modified    # Thu Dec 05 02:45:02 UTC 2002end

require 与 include

require:类似于 C 和 C++ 中的 include 语句以及 Java 中的 import 语句。如果一个第三方的程序想要使用任何已定义的模块,则可以简单地使用 Ruby require 语句来加载模块文件:

require filename

include : 可以在类中嵌入模块。如果是模块是单独定义在一个单独的文件中,那么在嵌入模块之前就需要使用require语句引用该文件

class Decadeinclude Week   no_of_yrs=10   def no_of_months      puts Week::FIRST_DAY      number=10*12      puts number   endendd1=Decade.newputs Week::FIRST_DAYWeek.weeks_in_monthWeek.weeks_in_yeard1.no_of_monthsmodule Week   FIRST_DAY = "Sunday"   def Week.weeks_in_month      puts "You have four weeks in a month"   end   def Week.weeks_in_year      puts "You have 52 weeks in a year"   endend

Ruby中的Mixins

Ruby 不直接支持多重继承,但是 Ruby 的模块(Module)有另一个神奇的功能。它几乎消除了多重继承的需要,提供了一种名为 mixin 的装置。
Ruby 没有真正实现多重继承机制,而是采用成为mixin技术作为替代品。将模块include到类定义中,模块中的方法就mix进了类中。

module A   def a1   end   def a2   endendmodule B   def b1   end   def b2   endendclass Sampleinclude Ainclude B   def s1   endendsamp=Sample.newsamp.a1samp.a2samp.b1samp.b2samp.s1
原创粉丝点击