ruby学习笔记2

ruby学习笔记2

 

  1. 构造方法initialize

Ruby创建对象时通过Ruby.new方法,若传递参数实际上是传递给了initialize方法

 

class Test

  def initialize(name,age,phone)

    @name = name

    @age = age

    @phone = phone

  end

end

调用:Test.new('zhangsan',20,'18112345678')

也可以给参数添加默认值

class Test

  def initialize(name='kk',age=18,phone='18112345678')

    @name = name

    @age = age

    @phone = phone

  end

end

 

调用:

test = Test.new

p test

 

输出

#<Test:0x000001023a2fe8 @name="kk", @age=18, @phone="18112345678">

 

没有给默认值的参数必传,否则报错。若只有部分参数给了默认值,在调用的时候只传递了未有默认值的参数,会依序赋值。

class Test

  def initialize(name,age=18,phone)

    @name = name

    @age = age

    @phone = phone

  end

end

调用:

p Test.new('kk','18112345678')

输出:

#<Test:0x0000010208e7a8 @name="kk", @age=18, @phone="18112345678">

 

2、to_s方法,inspect方法

to_s类似java中的toString,默认输出对象名及内存ID,可以重写。

重写之前调用:Test.new.to_s

输出:

#<Test:0x00000101cc5630>

 

重写:

class Test

  def initialize(name='kk',age=18,phone='18112345678')

    @name = name

    @age = age

    @phone = phone

  end

  def to_s

    "myname is #{@name} , #{@age} years old, telphone:#@phone.please call me latter!"

  end

end

 

调用:

Test.new.to_s

Test.new.inspect

输出:

 myname is kk , 18 years old, telphone:18112345678.please call me latter!

#<Test:0x000001024d3c78 @name="kk", @age=18, @phone="18112345678">

3、print、puts、p与to_s、inspect的关联

user = Test.new

print user  -------> 将调用输出user.to_s

puts user   -------> 将调用输出user.to_s

p user       -------> 将调用输出user.inspect

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值