Ruby基础数据类型

#数字分为证书Integer,浮点数Float(对应与其他语言中的double),和复数Complex

#整数又分为Fixnum和Bignum,Fixnum和Bignum会互相转换,这些都是ruby自动管理的操作。

a=123_333_3432#加入下划线不会影响数字的值

puts a

puts 0b00000010#0b是二进制

puts 0123#0 是八进制

puts 0xa0#十六进制

puts 2<=>2#前者比后者大返回1,相等返回0,比后者小返回-1



#浮点数Float

#String 字符串通常使用单引号或者双引号

str='1233dd'

str="1233ff"

#有时需要构造一个很长并且包含不少单引号,双引号,这样就比较繁琐了

#ruby还提供了%,%q和%Q等字符串表示法,这种表示方式使用的时候后面需要加上一堆分隔符去包含字符串(<>,{},[]等),Here适用于大段文字使用<<开头,并加上开始和结束的标识

str=%{"fdsf'"dsf"}

str=%q{"fdsf'"dsf"}

str=%Q{"fdsf'"dsf"}

str=<<H 

sdfsdfsdgasgsaldfjsaldfkjas;dlfkja;sdlkfjlsdfsadfsadfsdfasdfa

H

#嵌入字符串是把变量的一个字符串形式的值签入到另一个字符串中的方法使用格式是#(val),如果val不是字符串类型,则会先调用val的to_s方法进行隐式转换,再行嵌入

name="马欢"

puts "my name is #{name}"

#<<与+相同的效果操作。把给定对象附加到字符串对象上,生成一个新对象。

str<<"新的哈哈"

puts str.include?("哈哈")



#符号Symbol类型,内容相同的字符串可能是两个不同的对象,而相同标识符表示的符号在任何地方都引用的是一个相同的实例,指向同一个引用。

#符号与字符串比较,消耗的内存比较少。

a="str"

b="str"

puts a.object_id==b.object_id

sa=:str

sb=:str

puts sa.object_id==sb.object_id

 

class ChineseNum

  Number=['','','','','','','','','','']

  attr:chinese_num

  def initialize(value)   

    @chindes_num=value if Number.include?(value)

  end

  def to_num

    Number.index(@chindes_num)+1 if @chindes_num

  end

  def to_s

    @chindes_num

  end

  def succ

    raise(IndexError, "超出了数字范围") if self.to_num>10

    ChineseNum.new(Number[self.to_num])

  end

  def <=>(other)

    self.to_num<=>other.to_num

  end

end

def getChinese(val)

  ChineseNum.new(val)

end

one=getChinese("")

four=getChinese("")

puts one.to_num

puts one.succ

range=ChineseNum.new("")..four

range.each {|i| puts i}

 

你可能感兴趣的:(Ruby)