Ruby学习: 全局变量 和常量

一、全局变量

ruby中支持全局变量,ruby中的全局变量有如下几个特点:

1)标识符以$开头标记

2)全局变量可以在程序的任何地方加以引用

3)全局变量无需提前进行变量声明。引用尚未初始化的全局变量时,其值为 nil。

我们下面来看例子

class Demo
    def print
        puts $a
    end

end    

puts $a   #引用未声明的全局变量,$a这时值为nil

demo = Demo.new
demo.print  #类方法中引用未声明的全局变量,$a这时值为nil

$a=12
demo.print  #输出为12,因为这时$a已经有值了

需要说明的是,在实际编码中我们尽量不要自己定义全局变量,使用全局变量是非常不好的一个编程方式。

二、常量

ruby中的常量,必须在类中定义,不能定义到方法中,常量标识符的首字母必须大写。

举例:

class Demo
    Pi = 3.14

    def print
        puts Pi
    end

end    

#创建对象,调用对象的方法
puts Demo::Pi

demo = Demo.new
demo.print

Demo::Pi = 4  #会有警告,但不会出错,而且修改能生效

demo.print

注意,和其它语言区别的是。常量的值可以在类的外部被修改 (不能在类的方法中被赋值修改),虽然会报警告,但不会出错。

时间: 2024-10-25 03:11:23

Ruby学习: 全局变量 和常量的相关文章

Ruby学习笔记

Ruby学习笔记 Ruby语言中,以对象为基本单位,可以说所有的元素都是对象.按照之前对于面向对象程序的理解,对象是指包含了特定属性和方法集合的一组程序.对象由类来定义,具体的表现为对象实例.也就是说,对象是类的实例化[2]. Ruby语言的基础元素 对象:数值对象.字符串对象.正则表达式对象.时间对象.文件对象.目录对象.数组.哈希.例外对象等 数值对象   由于Ruby中一切数据都是对象,所以我们处理的数字实际上也是对象. a = 10,这样一个简单的赋值语句,实际上应当理解为 a = Nu

ruby 学习笔记 2 -变量

变量 在ruby的世界里,变量有5种,全局变量 局部变量 实例变量 常量 类变量以及伪变量 常用的: 全局: 在全局使用,使用$开头,因为是全局的,所以在任何的代码例子中都可以改变其值,造成混乱,所以不建议使用. 局部: 在一定范围内有作用.如 i = 10 ,其中i 就是一个局部变量 常量: 例如圆周率Pi,但是Pi 我们可以赋予他其他值,是可以变化的. 常量的首个字母必须大写,当试图改变常量值时,解释器会给出警告“ex4.rb:19: warning: already initialized

Ruby学习的一天-window下环境搭建及Ruby基础

学习Ruby参考教程: http://www.w3cschool.cc/ruby/ruby-installation-windows.html windowx下的ruby学习一.安装ruby,下载最新window稳定版ruby,这里是1.9.3版本点击next安装直到完成,为了方便,在安装界面下方会有个复选框提示是否需要安装watir,DevKit和环境配置的选项,这里勾选了,就不用那么麻烦配置了.安装完成后直接进入命令行,输入ruby -v .如果不出问题,应该会显示当前ruby版本信息. 二

PHP学习笔记——1.常量

目录: PHP学习笔记——1.变量 PHP学习笔记——1.常量 1.常量的意义 在实际应用中,PHP文件会引入其它文件 而当前文件中的普通变量有可能会被其它文件重新赋值覆盖 所以将重要变量定义为常量,不允许被覆盖定义 2.定义常量 define('APP_NAME', 'Noah Zhao'); //习惯将常量名全部大写 echo APP_NAME;  //注意不含$符 3.常量的特点 一旦被定义,则不能重新赋值.重复定义 常量具有'全局有效性',页面任何一处都能访问:在某个函数的内部,是不能访

Ruby学习之mixin

直接上代码: module Action def jump @distance = rand(4) + 2 puts "I jumped forward #{@distance} feet!" end end class Rabbit include Action attr_reader :name def initialize(name) @name = name end end class Cricket include Action attr_reader :name def i

ruby学习笔记(1)-puts,p,print的区别

ruby学习笔记-puts,p,print的区别 共同点:都是用来屏幕输出的. 不同点:puts 输出内容后,会自动换行(如果内容参数为空,则仅输出一个换行符号):另外如果内容参数中有转义符,输出时将先处理转义再输出p 基本与puts相同,但不会处理参数中的转义符号print 基本与puts相同,但输出内容后,不会自动在结尾加上换行符 1 2 3 4 5 6 7 s = "aaaa\nbb\tbb" p s p "****************" puts s p

ruby 学习笔记 1

写ruby blog  系统的记录下.也是对我学ruby的点滴记录. 先介绍下我的学习环境.系统:ubuntu12.04文档:techotopia ,ruby文档,the hard way learn ruby 以及其他文档记录:有道云笔记 关于ruby 学习ruby 通常会介绍下ruby的历史和发展,但是我觉得这些有的废话, 关于ruby,是一个日本人写出来的,是一门解释性语言 这就够了. 开始 在ubuntu上 ,先判断下是否installed ruby. 1 ruby -v 如果安装了会打

Ruby学习笔记0708

#!/usr/bin/env ruby class MegaGreeter attr_accessor :names # 初始化這個物件 def initialize(names = "World") @names = names end # 向每個人說 hi def say_hi if @names.nil? puts "..." elsif @names.respond_to?("each") # @names 是可以迭代的陣列容器 @nam

Ruby学习心得之 Linux下搭建Ruby环境

Ruby学习心得之 Linux下搭建Ruby环境1.前言2.Linux下安装Ruby环境 一.前言 本篇博文记录了Linux下Ruby编程环境的搭建. 本文内容基于以下文章:http://www.cnblogs.com/xfiver/archive/2012/03/08/2385833.html (linux下ruby安装[ubuntu10.10])http://www.360doc.com/content/07/0131/17/4910_351421.shtml (Ruby 在 Linux 上

java虚拟机学习-触摸java常量池(13)

java虚拟机学习-深入理解JVM(1) java虚拟机学习-慢慢琢磨JVM(2) java虚拟机学习-慢慢琢磨JVM(2-1)ClassLoader的工作机制 java虚拟机学习-JVM内存管理:深入Java内存区域与OOM(3) java虚拟机学习-JVM内存管理:深入垃圾收集器与内存分配策略(4) java虚拟机学习-JVM调优总结(5) java虚拟机学习-JVM调优总结(6) java虚拟机学习-JVM调优总结-基本垃圾回收算法(7) java虚拟机学习-JVM调优总结-垃圾回收面临的