ruby 实变量
一个实变量由@开头,它的范围限制在 self 对象内.两个不同的对象,即使属于同一个类,也可以拥有不同值的实变量.从对象外部来看,实变量不能改变甚至观察(比如, Ruby的实变量从来不是公用的),除非方法由程序员明确声明.像全局变量一样,实变量在初始前的值是nil.
Ruby的实变量用不着声明.这暗含着对象的弹性结构.实际上,每个实变量都是在第一次出现时动态加入对象的.
ruby> class InstTest
| def set_foo(n)
| @foo = n
| end
| def set_bar(n)
| @bar = n
| end
| end
nil
ruby> i = InstTest.new
#<InstTest:0x83678>
ruby> i.set_foo(2)
2
ruby> i
#<InstTest:0x83678 @foo=2>
ruby> i.set_bar(4)
4
ruby> i
#<InstTest:0x83678 @foo=2, @bar=4>
注意上例中直到调用了 set_bar方法 i 才报告 @bar 的值.
相关推荐
-
ruby 局部变量
局部变量由小写字母或下划线(_)开头.局部变量不像全局和实变量一样在初始化前含nil值. ruby> $foo nil ruby> @foo nil ruby> foo ERR: (eval):1: undefined local variable or method `foo' for main(Object) 对局部变量的第一次赋值做的很像一次声明.如果你指向一个未初始化的局部变量,Ruby解释器会认为那是一个方法的名字;正如上面所见错误 信息的. 一般的,局部变量的范围
-
Ruby中的变量学习总结
Ruby中的变量有几种形式,分别是局部变量.实例变量.类变量.全局变量,对于初学者来说,常常容易搞混,尤其像本人这种做java的,理解起来还是头痛,经过仔细辨别学习,将这几种变量的差异及使用场景总结如下: 一.命名方式 1.局部变量:小写字母或者"_"开头,如user,解释器解释到时才开始在内存中存在,一个良好的习惯是在进行变量定义时用nil进行赋值初始化,否则会出现类似undefined local variable or method `z'的错误: 2.实例变量:@开头,如@us
-
Ruby 中$开头的全局变量、内部变量、隐藏变量介绍
Ruby 中充满了一系列的隐藏变量,我们可以从这些预定义的全局变量中获取一些有意思的信息. 全局进程变量 $$ 表示当前运行的 ruby 进程. 复制代码 代码如下: >> $$=> 17170 我们可以从当前进程杀死它自己 复制代码 代码如下: >> `kill -9 #{$$}`[1] 17170 killed irb $? 表示最近一个子进程的状态 复制代码 代码如下: >> `echo hello`=> "hello\n&qu
-
解析 ruby 全局变量
全局变量由$开头.它们可以在程序的任何位置访问到.在初始化前,全局变量有一个特殊的值 nil. ruby> $foo nil ruby> $foo = 5 5 ruby> $foo 5 应谨慎使用全局变量.由于在任何地方都可以被写因此他们相当危险.滥用全局变量会导致很难隔离臭虫;同时也视为程序的设计未经严格考虑.当你发现必须要使用全局变量时,记得给它一个不会在其它地方一不小心就用到的描述性名字(像上面那样叫$foo可能不是一个好想法). 全局变量的好处是其可以被跟踪;你
-
ruby 变量
Ruby有三类变量,一种常量和两种严格意义上的伪变量(pseudo-variables).变量和常量都没有类型.虽然无类型变量存在一定的缺点,但却有更多的优点并很好的符合Ruby快速简便(quick and easy)的哲学精神. 在大多数语言里,变量都必须指定其类型,可更改性(是不是个常数)和范围;由于类型的不存在,剩下的东西也可由变量名字很快确定(你马上会看见),在Ruby里我们不需要变量声明. 由首字母标识符将其分类: $ 全局变量 @ 实变量 [
-
Ruby教程之注释、变量声明以及数组操作
前两天在"博客园"上看了一篇文章"PHP基础教程",介绍PHP的,感觉挺好.D瓜哥在学Ruby,正好也写一篇"Ruby入门教程".需要说明一下,这篇文章适合有编程基础的,但是没接触过Ruby的新手.而且,这篇文章侧重入门,老鸟可以直接飞过.(如果能帮忙检查一下是否有描述不当,甚至错误的地方,也欢迎来踩两脚.D瓜哥感激不尽.) Ruby环境搭建 在Windows下,搭建Ruby环境,比较简单的方法是在"RubyInstaller"
-
ruby 实变量
一个实变量由@开头,它的范围限制在 self 对象内.两个不同的对象,即使属于同一个类,也可以拥有不同值的实变量.从对象外部来看,实变量不能改变甚至观察(比如, Ruby的实变量从来不是公用的),除非方法由程序员明确声明.像全局变量一样,实变量在初始前的值是nil. Ruby的实变量用不着声明.这暗含着对象的弹性结构.实际上,每个实变量都是在第一次出现时动态加入对象的. ruby> class InstTest | def set_foo(n) | @foo = n
-
ruby 对象的初始化 方法
前面一节的 Fruit 类有两个实变量,分别表述水果的类型和状态.直到为这个类写了一个定制的inspect方法,我们方才了解它不会对一个缺乏属性的水果做出合理的解释.幸运的是,Ruby提供了一种允许实变量总是被初始化的方法. initalize方法 当Ruby创建一个新对象时,它总是会寻找一个名为 initialize 的方法并执行它.因此,我们可以简单通过一个initialize方法向实变量中加入缺省值,这样一来, inspect方法就有东西可说了. ruby> class Fruit
-
ruby 类常量 解析
一个常量由大写字母开头.它应最多被赋值一次.在Ruby的当前版本中,常量的再赋值只会产生警告而不是错误(non-ANSI版的eval.rb不会报告这一警告) ruby>fluid=30 30 ruby>fluid=31 31 ruby>Solid=32 32 ruby>Solid=33 (eval):1: warning: already initialized constant Solid 33 常量可以定义在类里,但不像实变量,它们可以在类的外部访
-
ruby 存取器 概念
什么是一个存取器? 我们在前面已经讨论过实变量了,但却未过多的讨论.一个对象的实变量属于它的属性,也是它与其它来自同一个类的对象的一般区别.读写它的属性是重要的;这样做需要做一个叫着属性存取器(attribute accessors)的方法.我们将很快看到我们并不是总要明确地写出存取器方法,但现在先让我们了解所有的细节.存取器的两种类型是写(writer)和读(reader). ruby> class Fruit | def set_kind(k) # a writer |
-
ruby中并发并行与全局锁详解
前言 本文主要给大家介绍了关于ruby并发并行和全局锁的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 并发和并行 在开发时,我们经常会接触到两个概念: 并发和并行,几乎所有谈到并发和并行的文章都会提到一点: 并发并不等于并行.那么如何理解这句话呢? 并发: 厨师同时接收到了2个客人点了的菜单需要处理. 顺序执行: 如果只有一个厨师,那么他只能一个菜单接着一个菜单的去完成. 并行执行: 如果有两个厨师,那么就可以并行,两个人一起做菜. 将这个例子扩展到我们的web开发
-
如何利用Ruby简单模拟Lambda演算详解
前言 最近看一本叫做<计算的本质>的书,这本书主要说了一些底层计算方面的知识.可以说它刷新了我的三观,而当今天看到可以使用Y组合子来实现递归的时候我的世界观基本崩塌了.故借着七夕来写一篇文章总结一些关于计算的一些基本认识.以便后续可以更好地学习.也借着Ruby的语法来阐述一下关于Lambda的一些故事. 0. 题外话 为了庆祝一下这个七夕节日,我提前关掉了LOL,打开了Emacs,敲下如下代码(这里顺便推广一下Ruby的单件方法) subject = "情侣" object
-
win10下使用virtualbox + vagrant配置ruby开发机环境
在写本文前,笔者已经尝试了多种其他的替代方法,例如wmware虚拟机安装kylin.然而发现总是还有各种问题.经大佬指点安装了virtualbox + vagrant.于是发现配置起来如此简单.接下来笔者将详细阐述. (注:笔者自己的服务器上的配置是centos7.2 + ruby2.3.4 + mariadb + redis,自己的笔记本为win10,另外,很多网上的类似文章都写于很长时间以前,很多内容现在已经不适用,甚至很多关键的环节还不讲清楚,导致笔者配置初期踩了很多的坑.所以写下此文,总
-
win7下从ruby源代码编译安装的方法
工作中需要在c++代码中嵌入ruby c api,然而在vs工程中编译失败,所以现在通过手动从源代码编译ruby寻找原因(之前使用rubyinstaller安装). 先从官网下载ruby 2.4.1 版本,https://www.ruby-lang.org/en/downloads/ 从安装指导可以看到,官方只提供了linux平台下的编译安装步骤,https://www.ruby-lang.org/en/documentation/installation/#building-from-sour
随机推荐
- MySQL中or语句用法示例
- 基于Jquery easyui 选中特定的tab
- 查看物理内存的批处理
- PHP输出缓冲控制Output Control系列函数详解
- asp+JMAIL实现发送邮件
- mysql使用source 命令乱码问题解决方法
- Win2008 远程控制安全设置技巧
- jQuery中closest()函数用法实例
- 修改或扩展jQuery原生方法的代码实例
- IIS 上传文件大小配置步骤(默认200K)
- Android植物大战僵尸小游戏
- 使用ionic切换页面卡顿的解决方法
- 总结ASP.NET C#中经常用到的13个JS脚本代码
- Android中制作自定义dialog对话框的实例分享
- 基于BootStrap的文本编辑器组件Summernote
- C语言中K-means算法实现代码
- Python对List中的元素排序的方法
- 微信小程序使用字体图标的方法
- java rocketmq--消息的产生(普通消息)
- vue基于element-ui的三级CheckBox复选框功能的实现代码