有一些命令式语言,融合了函数式语言的语法, Ruby 就是这样的语言

来源:互联网 发布:网络歌手爱的滋味mp3 编辑:程序博客网 时间:2024/06/02 04:26
也有一些命令式语言,融合了函数式语言的语法, Ruby 就是这样的语言,变量和方法区分得不很明显。
其次,说一说变量有哪些特征呢?

1). 变量有名字;

2).变量代表的那个事物应该有一个可以用数学度量的值;长度,面积,速度大小,磁场强度…
3).为了区别事物,我们将事物分成几个基本类型。所以,代表不同类型的事物,变量也就有了不同的类型。
4). 事物总是有产生到消亡的一个过程,因此,代表事物的变量,也就有了生命期。计算机科学,是一门将时间转换成空间的科学。在程序中,我们把变量的生命期,称之为变量的作用域。
变量名,变量值,变量类型,变量的作用域,是我们学习命令式语言不可回避的几个要素。
如果你是一门编程语言的设计者,仔细考虑一下,上面四个要素,对于编程语言的使用者都是必须的吗?
作为一个使用者,1). 2). 是必须的。至于类型、生命期,与我何干?某个变量,我使用一下就丢弃了,要我操心太多,还不如我从头设计呢。

      由编译内核(或解释内核)在运行时刻来判断变量类型的语言,叫动态类型语言。
变量既然是代号,那么可以代表数字,文字(字符串),代码序列(块,闭包),一段程序(文件)…在运行中,变量能够随时代表不同的事物,而不管事物是什么类型,这种语言,叫弱类型语言。这里的“弱”,是指弱化了类型的概念,不理会类型的差异。

      Ruby 语言还是有基本类型。至于变量作用域,纯粹的函数式语言中是没有这个概念的。Ruby 中是有变量作用域概念的,还记得变量名前缀字符吗?实际应用中,有时会比较复杂,使用闭包时就知道了。
      Ruby 语言中,一切都是对象,变量是不是对象呢?变量不是对象,变量只是引用某个对象的时候,你看到的一个代号而已。

Ruby 是动态类型语言,不用给任何变量指定数据类型,解释器会在你第一次赋值给变量时,在内部将数据类型记录下来。请看程序E5.3-1.rb :

# E5.3-1.rb
a=5
b="hh"
puts "a = #{a}"
puts "b = #{b}"
运行结果:
>ruby E5.3-1.rb
a = 5
b = hh
>Exit code: 0

原创粉丝点击