新浦京81707con > 注册购买 > 心得体会,阅读笔记

原标题:心得体会,阅读笔记

浏览次数:157 时间:2019-11-20

PROGRAMMING RUBY 19怎

因为刚初始接触ruby,所以或者意见相当不够标准,不过认为这本书的牵线格局依旧相当好,首先对于ruby中有的主要的概念举办三个归并的牵线,然后从ruby的大旨类和对象来入手......  

Ruby 阅读笔记,programmingruby 在Ruby中,通过调用构造函数(constructor卡塔 尔(阿拉伯语:قطر‎来创造对象 song1=Song.new("Ruby") Ruby对单引号串管理的比很少,除了...

返回

What's the next project

welcome!welcome!welcome!welcome!welcome!welcome!  

class
    def initialize(name, artist, duration)
        @name = name
        @artist = artist
        @duration = duration
    end 
end

Programming Ruby 阅读笔记,programmingruby

  • 在Ruby中,通过调用构造函数(constructor卡塔尔国来创制对象

song1=Song.new("Ruby")

  • Ruby对单引号串管理的比较少,除了极少的生龙活虎部分莫衷一是,键入到字符串字面量的开始和结果就重新整合了那一个字符串的值。

Ruby对双引号字符串游越多地管理。首先,它寻觅以反斜线开端的系列,并用二进制值替换它们。其次是字符串内的表达式内插,#{表明式}种类会被“表明式”的值替换。

  • $greeting="Hello" # $greeting是全局变量
  • @name="Prodence"  # @name是实例变量
  • Ruby 使用黄金时代种命名惯例来不一样名称的用场:名称的第二个字符展现那几个名称怎样被使用。局地变量、方法参数和办法名称都不得不以小写字母或下划线伊始。全局变量都有$为前缀,实例变量以@符号开首,类变量以@@符号初阶。类名称、模块名称和常量必需以一个大写字母起头。
  • 过多语言中nil(或null)的概念是指“未有目的”, 在Ruby中,那是不相通的:nil是二个目的,与其余对象近似,只可是它是用来表示从未别的东西的对象。
  • a = %w{ant bee cat dog} 等价于上边的表明方式
  • a= ['ant','bee', 'cat' ,'dog']
  • 正则表明式只是风姿浪漫种钦定字符格局的章程,那几个字符情势会在字符串中打开相配。在Ruby中,常常在斜线之间(/pattern/卡塔尔国编写形式来创立正则表明式。
  • Block:

def call_block

puts "Start of method"

yield

yield

puts "End of method"

end

call_block {puts "In the block"}

 

Result:

Start of method

In the block

In the block

End of method

 

应用block来完毕迭代器:迭代器是从某种采摘如数组中接二连三再次回到成分的办法

animals= %w(ant bee cat dog elk)

animals.each{|animal| puts animal}

 

Result:

ant

bee

cat

dog

elk

class Song

def initialize(name, artist, duration)

@name=name

@artist=artist

@duration=duration

end

end

song=Song.new("Bicyclops","Fleck",260)

puts song.inspect

 

Result:

#<Song:0x00000002eca6d8 @name="Bicyclops", @artist="Fleck", @duration=260>

inspect方法(能够发送给任何对象卡塔尔默许将对象的ID和实例变量格式化。

 

  • 三个指标的外表可知部分被喻为其属性(attribute卡塔尔国

class KaraokeSong < Song

def initialize(name, artist, duration, lyrics)

super(name, artist,duration)

@lyrics=lyrics

end

def to_s

"KS: #{@name}--#{@artist} (#{@duration}) {#{@lyrics}}"

end

attr_reader :name, :artist, :duration, :lyrics  # Attributs setting method 2

def  name  #Attribute setting method 1

@name                

end

def artist

@artist

end

end

 

song=KaraokeSong.new("Bicyclops","Fleck",260,"And now,the...")

puts song.artist

 

  • 当调用super而不接纳参数时, Ruby向当前指标的父类发送贰个音信,供给它调用子类中的同名方法
  • Object的实例方法
  • 可写的质量:

主意生龙活虎: 创制三个名字以等号最终的法子

 图片 1 

图片 2

图片 3

方法二:attr_writer

 图片 4 

  • 虚构属性 Virtual Attributes

 图片 5

上边的示范中运用品质方法创造了一个设想的实例变量。对表面世界来说,duration_in_minutes就如其余质量一样。然则,在内部它从未对症用药的实例变量。

 

  • 质量、实例变量及措施

性格正是三个措施。有些时候,属性轻易地回来实例变量的值。有些时候,属性重回总计后的结果。并且或多或少时候,那四个名字已等号最后的法子,被用来更新目的的事态。

当设计三个类的时候,决定其颇负怎么样的在那之中意况,并决定这里面景色对外部的表现方式。内幕保存在实例变量中。通过艺术暴暴光来的外界状态,我们称为属性。类能够实践的其余动作,正是相符方法。

 

  • 类变量:类变量以八个@符先导,与全局变量和实例变量差异,类变量在选取以前必得被初叶化,日常,开头化即是在类定义中的简单赋值

 图片 6

  • 类措施,不束缚于别的特定目的的点子。

new方法成立叁个新的类对象,可是new方法本人并不与二个一定的靶子相关联。

类情势和实例方法是经过它们的定义差异开来的: 通过在艺术名以前放置类名以致一个句点,来定义类方法

 图片 7

 

  • 访谈调控 Access Control

 图片 8

 

别的,可用通过将艺术名作为参数列表传入访谈调控函数来安装它们的访谈品级

 图片 9 

  • 变量

变量是几个对象呢?在Ruby中,答案是‘不’。变量只是对象的援用。对象漂浮在某处二个比相当大的池中(大多数时候是堆,即heap中卡塔尔,并由变量指向它们

  图片 10

可以通过运用String的dup方法来防止成立小名,它会成立二个新的、具有相像内容的String对象

  图片 11

能够透过冻结二个对象来阻拦其余人对其展开改善。试图改动四个被冰冻的指标,Ruby将抓住几个TypeError非常

 图片 12 

  • 容器(Continuers卡塔 尔(阿拉伯语:قطر‎:是指包罗八个或八个目的援引的对象

数组类含有大器晚成组对象引用。每种对象援用攻克数组中的三个岗位,并由壹个非负的整数索引来标记

 图片 13

数组有[]操作符来展开索引。和Ruby的绝大大多操作符同样,它实际上是七个措施(Array类的二个实例方法卡塔 尔(英语:State of Qatar),因此能够被子类重载。使用非负整数访谈数组,将会回四处于该整数职位上的目的,假诺此任务上从不对象,则赶回nil。使用负整数访谈数组,则从数组末端起头计数

 图片 14

可以选用一些数字[start, count]来访谈数组,那将赶回二个含有从start依旧的count个指标引用的新数组

 图片 15

还足以接纳range来对数组实行索引,其初阶和终结地点被多个或3个点分隔断。四个点的样式包括甘休地点,而3个点的情势不分包

 图片 16 

[]操作符有二个对应的[]=操作符,他得以安装数组中的成分。假如下标是单个整数,那么其地点上的因素将被赋值语句侧面的事物所替换。产生的任何空隙由nil来填充

 图片 17

 图片 18 

  • 散列表 Hashes

也成关联数组、图、词典。Hash能够用任何项目标靶子来开展索引,举个例子字符串、正则表达式等等。当你将叁个值存入Hash时,必要提供八个对象,一个是索引(常常称为键(key卡塔尔卡塔 尔(阿拉伯语:قطر‎,另三个是值。

 图片 19 

  • Block

先是, block在代码中只和章程调用一同现身;block和措施调用的最后二个参数处于同风姿罗曼蒂克行,并紧跟在现在(可能参数列表的右括号的末尾卡塔 尔(阿拉伯语:قطر‎

说不上, 在碰到block的时候,并不立时实行当中的代码。Ruby会记住block现身时的上下文(局地变量、当前目的等卡塔 尔(英语:State of Qatar),然后实践措施调用

在block定义中,参数列表位于多少个竖线(管道符卡塔 尔(阿拉伯语:قطر‎之间, block可以有人以数量的参数

 图片 20

再次来到低于有个别值的具有Fibonacci数列项:

 图片 21

假使传递给block的参数是早已存在的风流倜傥部分变量,那么那些变量即为block的参数,它们的值恐怕会因block的实践而改良。相同的法规适用于block内的变量:假若它们第三遍面世在block内,那么它们就是block的有的变量。相反,假诺它们先出以后block外,那么block就与其外界意况分享这几个变量

Defined? 方法在其参数未有定义时重临nil

 图片 22 

inject迭代器:让您能够遍历搜集的具有成员以合共出叁个值

inject是这么职业的:block第壹次被实践时,sum被置为inject的参数,而element被置为采摘的第2个成分。接下来每趟推行block时,sum被置为上次block被调用时的再次来到值。inject的终极二遍调用block重临的值。假如inject未有参数,那么它接收采摘的第叁个因素作为开端值,并从第2个要素最早迭代。

 图片 23 

  • 闭包(closure)

 图片 24 

  • 数字

无可反对范围内的整数

 图片 25

在其间以二进制格局积累,它们是Fixnum类的对象,范围之外的偏分头存款和储蓄在Bignum类的靶子

Ruby 会自动管理它们之间的来往调换。

 图片 26 

在挥洒整数时,能够选取八个可选的指导符号,可选的进制提醒符(0代表八进制,0d表示十进制[默认], 0x代表十一进制也许0b表示二进制卡塔 尔(阿拉伯语:قطر‎,前面跟后生可畏串适合适宜进制的数字。下划线在数字串中被忽略。

 图片 27

富有整数都以目的,况且能够对各类款式的消息作出响应。Ruby使用num.abs实际不是abs(num)去赢得数字的绝对值

大背头帮衬的二种有效的迭代器:

 图片 28 

在乎downcase方法名称结尾处的慨叹号, 那些标志用来代表方法会在合适的职位纠正选取者,在这里个例子中,它把字符串造成小写

 图片 29 

  • 区间

1. 间隔的率先个且最或然最自然的用法是:表明系列。在Ruby中,使用“..”和“...”区间操作符来创设连串。五个点的花样是创办闭合的间距(富含右端的值),而3个点的样式是创建半闭半开的间距,不包含右端的值

<=>太空船操作符,它相比八个值,并基于第一个值是或不是低于、等于、大于第叁个值,分别再次回到-1,0, 1

  1. 间距作为标准:在那间它们表现的好似某种双向开关 - 当区间第大器晚成部分的法规为为true时,它们就开采,当时期第2盘部的条件为true时,它们就关门。举个例子上面包车型客车代码段,打字与印刷从专门的学问输入得到的行的汇合,每组的第生龙活虎行包含start那个词,最毕生机勃勃行满含end这几个词

图片 30

  1. 间距作为间距: 看看一些值是不是会落入区间表明的区间内。使用===(case equality操作符卡塔 尔(英语:State of Qatar)能够成功那或多或少

图片 31

 

class Song 
  def to_s
      "Song: #@name     #@artist (#@duration)"
  end
end
song = Song.new("Bicyclops", "Fleck", 260)
song.to_s
"#<Song:0x007faabdab80c8>"
song = Song.new("Bicylops", "Fleck", 260)
song.to_s

对song类来讲,initialize方法采用3个参数,这几个参数的效率同方法内的生龙活虎对变量一样,由此它们服从了有的变量命名的约定,即以小写字母初步。

"#<Song:0x007faabdab80c8 @name="Bicyclops", @artist="Fleck", @duration=260>"

不过那并不曾什么样卵用,只是输出对象的ID而已,大家得以覆写(override卡塔 尔(阿拉伯语:قطر‎song中的to_s方法。大家利用#标识把3个实例变量插入到字符串中。

song = Song.new("Bicyclops", "Fleck", 260)
song.inspect 

本文由新浦京81707con发布于注册购买,转载请注明出处:心得体会,阅读笔记

关键词: 新浦京81707con 时间的朋友

上一篇:SecureCRT中Script脚本使用心得

下一篇:没有了