因为发现昨天在讲基础运算子的时候很多地方需要先知道变数跟资料型别,所以今天赶快来补充一下。真的是越写会越发现程序语言的每个知识都是环环相扣的,缺一不可,但是学习的顺序又很难拿捏。可能就是全部一起看过去,当你在实作的过程中就会发现这一路上所学的会全部串在一起!
变数就像姓名贴纸一样,可以让我们简单的叫出某个资料。就像是一个人会有很多特质,高矮、胖瘦、生理性别、肤色发色...等,但如果每次要叫一个人就要把她所有特质都叫出来才能"呼叫"那个人,感觉就有点累、有点没效率吧?所以我们出生的时候,有人会帮我们取名字,长大之後偶尔还会有绰号出现。这个取名的过程就像是变数宣告一样,把你这个人指定给这个名字,以後只要叫到这个名字就是在说你啦!!!!
通常 Ruby 里面的变数都是小写英文字或 _
开头,不过你如果要用中文或 Emoji 来当变数名称也是可以的,只是会有点... 奇妙。 BUT!!! 在 Ruby 里面变数是不能用数字开头的。变数的命名是一门大学问,通常要注意可读性,要把读你的 Code 的人想像成对这个专案完全没有背景的人,如果他也能看懂的话就代表是个好懂的 Code。
还有个很重要的东西忘了提!那就是在 Ruby 里面英文大小写是不一样的唷!
> aBc = 123
=> 123
> aBc
=> 123
> abc
NameError (undefined local variable or method `abc' for main:Object)
昨天有说过我们在宣告变数的时候用的是一个等号,等号的左边就是那个"名字",等号的右边就是你想要连结的资料。
像是:a = 123
就是把 123 这串数字指定给 a 这个变数,所以你下次呼叫 a 的时候就会跑出 123 罗。
Ruby 里的变数可以简单地分成四种:
就我目前的观察,在写 Ruby on Rails APPs 刚开始最容易碰到的是前面两个,後面两个可能要等我功力比较高深之後才会慢慢碰到吧。
这四种变数最大的差异就是作用的范围,
区域变数(英文其实是"当地"变数?)顾名思义就是只能在你那个小区域里面作用,像是之後会提到的类别或方法的 block 里面,如果还没宣告就直接呼叫的话,会跳出NameError (undefined local variable or method 'l' for main:Object)
的命名错误。
实体变数则是可以存活在你新建了的一个类别实体里面,另外如果你在还没宣告实体变数的状况下呼叫的话,会回传 nil (空值,之後会提到)
(关於类别跟实体只能留待後面解释,所以类别变数在这边就先跳过)
全域变数就是照字面上说的一样在哪里都可以用啦!但是建议不要轻易使用全域变数,很容易就会造成污染或是让整个环境变得非常复杂。全域变数也是在还没宣告的状况下呼叫会回传 nil 的。
Ruby 的资料型别可分为下面几种
> 0.1 + 0.2
看会得出什麽结果。" "
包起来的资料,所以 "123"
也是属於字串而不是数字喔!true
跟 false
[ ]
包起来的一串东西,具有顺序性,不同的项目要用逗号隔开,
,里面可以是各种资料,甚至可以是另一个阵列> a = []
> b = [123]
> c = [123, "123", "abc"]
> d = [123, 123, 123]
> e = [nil, 123, [1, 2], {abc: 123}, :abc, true]
> 以上都是可以的唷
{ }
包起来的一串东西,里面会有 key 跟 value 的组合,key 会是符号或是字串, value 则是各种资料型别都可以,key 跟 value 会用 =>
来隔开,但是 Ruby 现在的版本让我们可以比较直觉方便的宣告 Hash,所以可以直接用 :
来隔开,就会有一样的效果> a = {:abc => 123}
> b = {abc: 123}
> c = {a: 1, b: 2}
> d = {"abc" => 123, "def" => [1, 2, 3], "g" => nil, "e" => true}
> e = {abc: 123, def: 123, g: nil, e: true}
其中要注意用符号当 key 跟用字串当 key 是代表不同意思的。另外在宣告时如果是用 {"abc": 123}
则 key 会直接从字串转换成符号。还有 Hash 里面的 key value 组合是没有顺序性的。
:
开头的就是符号,像是 :abc
, :good
这种资料,Hash 的 Key 通常也会选择使用符号另外值得一提的是在 ruby 里面,会被当作 false
的就只有 false
本身还有 nil
,其他所有资料都会被当作 true
(不管是空字串、空阵列、空杂凑都是真的啦!都是存在的啦!)(是不是觉得我疯了?)
> nil == "" # false
> nil == [] # false
> nil == {} # false
开始真正进入 Ruby 之後就发现之前很像真的学了一些东西,然後真的是环环相扣环环相扣扣扣扣扣啊!!!!! 写到一半都会发现:啊,这个也要写一下,啊,那个很像不解释这边会变很奇怪,那就等我继续让文章们堆叠出来之後再来做整理了... 如果有哪里说错的欢迎留言给我跟我说,毕竟我也还是个孩子啊!
>>: # Day 10 Cache and TLB Flushing Under Linux (二)
来做个todoList来验收这近一个月的React学习成效吧! 在制作之前,我先用Html设计想要的...
前言: 上一篇我们讲了如何建立你的第一个React网页,那今天阿森会介绍我们写网页会用到怎样的架构...
当想要比较两人的强弱时 通常比较过去结果很容易受到各因素干扰 如果可以直接量化两人的表现 就可以直接...
如果你平常要处理大量文书工作,应该对我们这次介绍的「项目符号和编号」并不陌生,这又另称为清单区块 ...
开启Word档案後先是脑袋一片空白於是请教了同事有没有计画书的范本,看完之後灵感有如用涌泉般的冒出,...