预防针:如资讯有错,欢迎指正分享,感谢您。
回答问题前,先分享一些观念。
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是强型别。
我想表示,这题我只会这样回答!
>>: 影像处理:利用 Numpy 的 histogram 视觉化灰阶影像的强度分布
上一篇完成了缴款纪录的查询,确认缴款纪录是否完成。 为了查询方便,每日批次去抓取前两日资料写入自己的...
RecyclerView比ListView更高阶且更具灵活性 此元件是一个用於显示庞大资料集的容器,...
哈罗大家好~ 所以接续昨天提到的内容,IT环境建置,除了要思考使用场景外,也要考量整体组织的 IT ...
-安全和隐私控制系列(来源:NIST SP 800-53 R5) .安全和隐私控制有效性解决了正确...
纪录一下我的作品当中点击get details按钮跳出Popup组件,按下叉叉可关闭Popup组件的...