博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1月5日 对象Object, 含过去看的英文档的总结链接
阅读量:5079 次
发布时间:2019-06-12

本文共 1521 字,大约阅读时间需要 5 分钟。

Object 也是一种数据类型,可以有属性,有method.

反之,在Ruby中,每一种数据类型都是Object。如String,Integer,Float,Array,Hash.

 IN Ruby everything is a object!

 

 

 

Class定义Object

Class就像是模具板,定义了同一种类型的Object有哪些共同的attribute和method. 

Ruby defines the attributes and behaviors of its objects in classes. 

class Carattr_accessor :color # 这会定义属性 @colordef runputs "This #{@color} car is running"endend

可以用new 来产生实例对象 。例子:

car1 = Car.new

car1.color = "red" 

car1.run  

 

内建类 

刚刚说过在Ruby 中,每种数据类型都是对象Object。他们都是从类种产生出来的:

"foobar".class 会回传 String 是个类

String.new("foobar") 等同于 "foobar"

不过由于这些数据太常见,使用太频繁,就不用 .new来产生,直接用符号表示了。 

 

常数Constant

在Ruby 中,大写开头的变量叫常数,?️ 这个数值固定不变。例如:

STATUS = ["pending", "confirmed"]

Pi = 3.1415926

所有的Class类都是一种常数,所以命名的时候用大写开头。 

 

 

题目 27

请自订一个 Person 对象,属性有 first_namelast_name,然后定义一个方法是 greet 会输出 "Hi, <first_name> <last_name>" 

class Person
  attr_accessor :first_name, :last_name
  def greet
    puts "Hello, #{first_name} #{last_name}"
  end 
end

 

p1 = Person.new
p1.first_name = "Peter"
p1.last_name = "Wang"
p1.greet # 输出 "Hello, Peter Wang"

 

如果要在实例对象的时候,就传入实例变量,p1 = Person.new("王明") ,则必须使用 initialize(..) method

在?的例子中,需要在 attr_accessor :first_name, :last_name? 增加这个method:

 

class Person
  attr_accessor :first_name, :last_name
  def initialize(first, last)
     @first_name = first
     @last_name  = last
  end
  def greet
    puts "Hello, #{first_name} #{last_name}"
  end
end

 

p3 = Person.new("王", "明")
p3.first_name
p3.last_name
p3.greet

⚠️ :实例化对象的时候,就必须加入参数了,否则会报错 

❌ :in `initialize': wrong number of arguments (given 0, expected 2) 

 

转载于:https://www.cnblogs.com/chentianwei/p/8202583.html

你可能感兴趣的文章
HTML列表,表格与媒体元素
查看>>
设计器 和后台代码的转换 快捷键
查看>>
STL容器之vector
查看>>
数据中心虚拟化技术
查看>>
复习文件操作
查看>>
SQL Server 使用作业设置定时任务之一(转载)
查看>>
第二阶段冲刺-01
查看>>
BZOJ1045 HAOI2008 糖果传递
查看>>
JavaScript 克隆数组
查看>>
eggs
查看>>
oracle 报错ORA-12514: TNS:listener does not currently know of service requested in connec
查看>>
python3 生成器与迭代器
查看>>
java编写提升性能的代码
查看>>
Abstract Factory Pattern
查看>>
list 容器 排序函数.xml
查看>>
《Genesis-3D开源游戏引擎完整实例教程-跑酷游戏篇03:暂停游戏》
查看>>
CPU,寄存器,一缓二缓.... RAM ROM 外部存储器等简介
查看>>
windows下编译FreeSwitch
查看>>
git .gitignore 文件不起作用
查看>>
Alan Turing的纪录片观后感
查看>>