Ruby基本介绍(四)

基本上大叔宅男不是很想放男团K-pop, XD


本篇会提到的

  1. 定义方法
  2. 回圈(loop)

定义方法

其实前面几篇很明显显示,Rudy用def来产生一个方法。

  def 方法名称(参数)
    #流程控制区, 解题实作区
  end
  
  put 方法名称(参数)
  #参数可复数,但执行方法给的数目要一样。

先来看一个简单的范例

2.7.3 :108 > def k_pop(song)
2.7.3 :109 >   "Let Dance! #{song}"   #小衍生题''与" "的差异。
2.7.3 :110 > end   #108-110为一个方法。
 => :k_pop  #在Interactive Ruby Shell(irb)定义好後,用一个符号来记忆(记得符号与字串差异吗?)
2.7.3 :111 > k_pop("Hands up!")  #与很多语言类似,方法名加参数执行方法
 => "Let Dance! Hands up!"   #还记得执行方法都会有回传值这件事吗?

再稍稍加工一下

2.7.3 :112 > puts k_pop("Hands up!")
Let Dance! Hands up!
 => nil 
2.7.3 :113 > p k_pop("Hands up!")
"Let Dance! Hands up!"
 => "Let Dance! Hands up!" 

请於前篇一起服用,就也是我在分享定义方法时,要先分享p与puts差异。
当然也有可能,我比较笨,会一直乱加p与puts
好了定义方法跟流程控制已经学完了XD!我们先进入回圈。


回圈:就是重复做一件事

但是在程序语言中,使用回圈语法有几件很重要的事。

  • 程序语言中一般的回圈语法,你要设立一个回圈终止的条件。
  • Ruby中有的回圈语法简化上面所说的。
  • Ruby中有些回圈语法会做复数以上的事情。
  • 回圈多不一定不好,编码多不一定不好,但Ruby的特色之一就是能让回圈减少,编码减少,这是学Ruby要注意的事情。

设立终止条件

2.7.3 :120 > shake_it = 0
 => 0 
2.7.3 :121 > while shake_it < 8  #这便是终止条件
2.7.3 :122 >   puts "Rollin'"  #没达到条件前要做什麽事
2.7.3 :123 >   shake_it += 1  #每执行一次 + 1  
2.7.3 :124 > end  
Rollin'
Rollin'
Rollin'
Rollin'
Rollin'
Rollin'
Rollin'
Rollin'
# += ,其他语言不一定有的特殊写法, a = a + 1 可写作 a += 1。
# 如果还没离开irb请输入 puts shake_it 看看发生什麽事。

Ruby中有的回圈语法简化上面所说的。

2.7.3 :126 > 10.times do puts "Rollin'" end
Rollin'
Rollin'
Rollin'
Rollin'
Rollin'
Rollin'
Rollin'
Rollin'
Rollin'
Rollin'
 => 10 
2.7.3 :127 > 10.times { puts "Rollin'" } # do end的简化写法,喜欢哪个用哪个,另外这个写法叫block。(讲完会蒸发的那一种衍生题)

Ruby中有些回圈语法会做复数以上的事情。

2.7.3 :128 > shake = ["head", "hand", "body"]
 => ["head", "hand", "body"] 
 
2.7.3 :133 > shake.each {|part| puts "Shake your #{part}!"}  #迭代(iteration)
Shake your head!
Shake your hand!
Shake your body!
=> ["head", "hand", "body"] #each方法用法可以再查询,很常用。可以把133行的puts拿掉,观察会发生何事。

2.7.3 :134 > shake.map {|part| "Shake your #{part}!"}
=> ["Shake your head!", "Shake your hand!", "Shake your body!"] 
#把shake这个阵列,每一个资料变成"Shake your #{part}!",再变成一个新阵列。

我知道我很多细节还没说,但毕竟已经有很多很好的资料可以看到基础的部分,我还是以自己学习中,觉得要特别记得的心得作分享。这几天分享的部分,还请配合已经编写很清楚的龙哥-为你自己学Ruby on rails服用。(第五,六)

另外请有缘人查询以下语法的用法。
each_with_index


衍生题''与" "的差异。

都是可以将资料包起後成为字串。

2.7.3 :136 > "K-POP!"
 => "K-POP!" 
2.7.3 :137 > 'K-POP!'
 => "K-POP!" 
2.7.3 :138 > "K-POP!".class
 => String 
2.7.3 :139 > 'K-POP!'.class
 => String 

但是" "中可以加入#{}这个, ' '不可以。

衍生资料:https://stackoverflow.com/questions/10869264/meaning-of-in-ruby
菜鸟我只记怎麽用,文章上面已经示范了
ok!今天收工!


<<:  用powershell 远端登入Microsoft 365

>>:  随身开机碟 lubuntu 启用 fcitx 呒虾米输入法的步骤

[C 语言笔记--Day04] C 语言的 function call 如何被组合语言实作

这篇文章是用 x86-64 的架构作为例子,因为多数人的电脑是用 x86-64 的架构 只要依照 在...

DAY5 绘制介面

上一篇我们完成了wireframe的绘制,这次我们要将草稿跟库拉皮卡一样,没有办法下船更具现化一点,...

Day 5 - 透过 RKE 架设第一套 Rancher(下)

本文将於赛後同步刊登於笔者部落格 有兴趣学习更多 Kubernetes/DevOps/Linux 相...

Day-26 请问 REST 是什麽? GET 和 POST 是什麽?

传说中的 REST (表现层状态转换) 出现了!一个不太好解释的名词,但面试我还真的碰到了…初心者...

[Day7] 提升

何谓提升(Hoisting)? 提升(Hoisting) 其实主要是为了厘清 JavaScript ...