Ruby基本介绍(三)-P与Puts方法的差异

今日K-pop推荐!


本篇文章会提到的事

预防针:如资讯有错,欢迎指正分享,感谢您。

  • P与Puts差异
  • 上篇其他衍生问题回答

衍生问题回答

p 与 puts 差别? (突然觉得这一个问题,就应该可以一篇文章...)

回答问题前,先分享一些观念。

  1. p 与 puts 都是一种方法,puts前面还有一个print方法,请先记得puts与print简单差异在资料印出来的样子不一样,print为连续印出,puts会换行(如果资料内有换行符号),两者都会回传nil。以下图做举例。
2.7.3 :009 > print 1, 2, 3
123 => nil 
#123是print方法执行後显示给你看的结果,nil是回传值
2.7.3 :010 > puts 1, 2, 3
1
2
3
 => nil 
#1
#2
#3 是p方法执行後显示给你看的结果
#一样nil是回传值

2.nil於ruby中代表的就是什麽都没有(所以nil不是物件,因为nil就是什麽都没有),之前提过阵列,阵列犹如一个长条形药盒,一格是一个记忆体,如过阵列中间要空一格,就要输入nil。如下

2.7.3 :032 > [1, nil, 3]
 => [1, nil, 3] 

就像是说,你有格记忆体里没有资料,但你还是要有那个记忆体显示,所以出现nil。

3.回传值,是回传一个资料(物件)让记忆体记忆(记忆不代表save),如果回传nil给记忆体记忆,就是记下"什麽都没有",而我们要将这格记忆体的"内容物"表现出来,就会出现"什麽都没有"如下。

2.7.3 :037 > puts [1, nil, 3]
1

3
 => nil 
2.7.3 :038 > puts nil

 => nil 

另外一个小重点,执行任何方法都会有回传值。

4.p则是列印资料的整个型态与架构,所以在执行p方法後,"什麽都没有"会以nil出现,但p这个方法会有回传值。如下

2.7.3 :057 > x = [1, nil ,3]
 => [1, nil, 3] 
2.7.3 :058 > p x
[1, nil, 3]
 => [1, nil, 3] 
2.7.3 :059 > p nil
nil
 => nil 
2.7.3 :060 > puts x
1

3
 => nil 
2.7.3 :062 > p 123
123
 => 123 

整理後:
p列印整个型态与架构,且具有回传值。
puts列印内容物,如有换行符号会换行(回传nil,但因为nil代表什麽都没有),没有回传值。

&&与||符号

这两个符号在判断句"if"中常常使用,&&代表and,代表两个条件都须符合才能成立。||代表or,代表两个条件中有一样成立即可进行判断(成立)。

两者可以可混合使用,初学较常见例子,判断是否为闰年,如下

def leep_year?(year)
  year % 4 == 0 && year % 100 != 0 || year % 400 == 0
end
#能被4整除和不能被100整除,或可以被400整除。
#如果把&&跟||换位置,意思就不一样了,&&前後两个判断句要一起看。

= 与 ==

= 在 ruby不是叫"等於",是宣告一个变数成为一个资料(物件, 实体)的一个方法,如果有较多其他语言接触,用"指向"这个说法更能理解。所以 = 前面不会是实体, 会是一个变数。

2.7.3 :071 > 1 = 1
SyntaxError ((irb):71: syntax error, unexpected '=', expecting `end')
1 = 1
  ^

== 是一个判断方法,判断两个资料(物件, 实体),是否完全相同。

2.7.3 :072 > x == 2
 => false 
2.7.3 :073 > 1 == 2
 => false 
2.7.3 :074 > x = 2 
 => 2 
2.7.3 :075 > x == 2
 => true 
2.7.3 :076 > 2 == x
 => true 

可以顺便复习一下, = 与 == 这两个方法, 都有回传值。
== 常常只打 = 不可耻, 记得发现就好 XD

Ruby为强or弱型别?

强弱型别
Ruby是强型别。
我想表示,这题我只会这样回答!


<<:  Day 42 (PHP)

>>:  影像处理:利用 Numpy 的 histogram 视觉化灰阶影像的强度分布

[day26]批次实作-缴款纪录收档

上一篇完成了缴款纪录的查询,确认缴款纪录是否完成。 为了查询方便,每日批次去抓取前两日资料写入自己的...

Android Studio RecyclerView

RecyclerView比ListView更高阶且更具灵活性 此元件是一个用於显示庞大资料集的容器,...

【DAY 25】Microsoft 365 的方案有好多种,到底哪些适合我?(下)

哈罗大家好~ 所以接续昨天提到的内容,IT环境建置,除了要思考使用场景外,也要考量整体组织的 IT ...

NIST SP 800-53 R5的摘要

-安全和隐私控制系列(来源:NIST SP 800-53 R5) .安全和隐私控制有效性解决了正确...

vue组件使用props、$emit传递数据

纪录一下我的作品当中点击get details按钮跳出Popup组件,按下叉叉可关闭Popup组件的...