Ruby中类变量和实例变量的比较
1、类变量名以@@开始,一个类变量被这个类所有的实例对象共享;实例变量名以@开始,每个实例对象有各自不同的实例变量;
2、类变量在使用前必须初始化,否则在使用时会报错;而实例变量如果没有初始化,则使用时返回nil;
3、类变量是私有的,在类外无法直接访问,可以通过类方法和实例方法访问;
class B
@@number = 11
@@num = 22
def my_method #定义实例方法
puts @@number
end
def self.my_method #定义类方法
puts @@num
end
end
b = B.new()
puts b.my_method() #通过实例方法访问类变量 => 11
puts B.my_method() #通过类方法访问类变量 => 22
4、实例变量也是私有,无法在类外直接引用,可以通过类方法和实例方法访问;
class B
@num = 11 #实际上这是“类的实例变量”
@test = 22
def my_method #定义实例方法
puts @num = 33 #跟前面定义的@num不在一个作用域 =>33
puts @test #跟前面定义的@test不在一个作用域里,未赋初值,因此返回nil
puts @new = 567 #在实例运行my_method时才定义的实例变量 =>567
end
def self.my_method #定义类方法
puts @num #这里的@num就是前面定义过的@num =>11
puts @test # =>22
end
end
b = B.new()
b.my_method
puts "--------------------"
B.my_method
相关推荐
-
ruby中的双等号==问题详解
前两天在写代码的时候,突然收到警告说项目代码中存在 XSS 漏洞,遂立即根据报告的 URL 排查页面代码,虽然很快就修复了,而且同样问题的讨论两年前就有了,一般来说相对有经验的同学也应该都知道这个点,但是还是觉得有必要写出来,再次提醒一下其他小伙伴,避免踩坑. 问题根源 其中,在找到的漏洞出现的地方,都存在类似以下这样的 slim 代码: input class='xxx' value==params[:account] 问题就出在双等号 == 上,因为在 slim 跟 ERB 模板(其他模板比
-
实例解析Ruby中的数值类型以及常量
数值类型(Number) 整型(Integer) 整型分两种,如果在31位以内(四字节),那为Fixnum实例.如果超过,即为Bignum实例. 整数范围从 -230 到 230-1 或 -262 到 262-1.在这个范围内的整数是类 Fixnum 的对象,在这个范围外的整数存储在类 Bignum 的对象中. 您可以在整数前使用一个可选的前导符号,一个可选的基础指标(0 对应 octal,0x 对应 hex,0b 对应 binary),后跟一串数字.下划线字符在数字字符串中被忽略. 您可以获取
-
Python中类变量和实例变量的区别
目录 一.前言 二.解决过程 三.总结 一.前言 有人提问了一个关于Python类变量和实例变量的问题,这里拿出来给大家分享下,一起学习. 是用英文提问的,当然了英文看上去也不难,有点二级英文基础,也看得懂,实在不行,在线翻译一下也问题不大了. 二.解决过程 这里主要涉及到三个部分,类属性,实例属性,及实例属性的引用对象指向性问题.在该例中counter为类属性,__first为实例属性,print函数中的counter为实例属性的引用对象指向性问题.当ExampleClass类实例化时,__i
-
C#静态变量与实例变量实例分析
本文实例讲述了C#静态变量与实例变量的具体用法,分享给大家供大家参考.具体分析如下: 1)在语法定义上的区别: 类变量也叫静态变量,静态变量前要加static关键字,而实例变量前则不加: 实例变量也叫对象变量,即没加static 的变量: 2)在程序运行时的区别: 实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量.静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态
-
python“静态”变量、实例变量与本地变量的声明示例
前言 虽然各种编程语言之间大部分语法存在共通的地方,但是在一些细节的处理上还是千差万别 才接触Python不久(之前是学Java的),实在想吐槽一下语言之间编码格式上的不统一问题,比如Java用分号分隔代码块,Python用空格,这无形之中增加了编码人员的学习成本 作为初学人员,还是老老实实记录一下学习过程中的坑:) 1. "静态"变量的声明 这里的静态变量是借用Java中静态变量的概念(不知道Python中的具体概念是什么),指既可以通过类名直接进行访问,也可以通过类的实例进行访问的
-
Ruby中类变量和实例变量的比较
1.类变量名以@@开始,一个类变量被这个类所有的实例对象共享;实例变量名以@开始,每个实例对象有各自不同的实例变量; 2.类变量在使用前必须初始化,否则在使用时会报错;而实例变量如果没有初始化,则使用时返回nil; 3.类变量是私有的,在类外无法直接访问,可以通过类方法和实例方法访问; 复制代码 代码如下: class B @@number = 11 @@num = 22 def my_method #定义实例方法 puts @@number
-
java中静态变量和实例变量的区别详细介绍
运行效果: 控制台效果: ================================================== 代码部分 ================================================== /hello_test/src/com/b510/test/StaticTest.java 复制代码 代码如下: /** * */ package com.b510.test; /** * 在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例
-
简单分析python的类变量、实例变量
1.类变量.实例变量概念 类变量: 类变量就是定义在类中,但是在函数体之外的变量.通常不使用self.变量名赋值的变量.类变量通常不作为类的实例变量的,类变量对于所有实例化的对象中是公用的. 实例变量: 实例变量是定义在方法中的变量,使用self绑定到实例上的变量,只是对当前实例起作用. 2.访问 类变量 在类的内部和外部类变量都可以直接使用className.类变量的形式访问.但是在类的内部,也可以使用self.类变量来访问,但是这个是用含义就不同了(后面使用代码验证). 实例变量 在类的内部
-
浅谈静态变量、成员变量、局部变量三者的区别
静态变量和成员变量的区别: A:所属不同 静态变量:属于类,类变量 成员变量:属于对象,对象变量,实例变量 B:内存位置不同 静态变量:方法区的静态区 成员变量:堆内存 C:生命周期不同 静态变量:静态变量是随着类的加载而加载,随着类的消失而消失 成员变量:成员变量是随着对象的创建而存在,随着对象的消失而消失 D:调用不同 静态变量:可以通过对象名调用,也可以通过类名调用 成员变量:只能通过对象名调用 成员变量和局部变量的区别: A:在类中的位置不同 成员变量:在类中方法
-
Ruby类实例变量、类实例方法和类变量、类方法的区别
在Ruby中类实例变量.类实例方法和类变量.类方法的区别比较微妙,而且用法也有相当的区别.本文探讨一下他们的定义和基本的使用场景,以抛砖引玉... 一.类实例变量和类变量 类变量大家都很熟悉了,就是在类定义中用@@开头的变量.类变量是用于存储类的全局信息,它只属于类,不同与类实例变量(即用@开头定义的变量)每一个类的对象都有一份数据. 类变量是可以被继承的,也就是说如果我们派生一个子类,那么在子类中是可以访问父类的类变量的.子类和父类共享一份数据,对一个类的修改会反映到另一个类中.如下边
-
实例讲解Ruby中的五种变量
Ruby 全局变量 全局变量以 $ 开头.未初始化的全局变量的值为 nil,在使用 -w 选项后,会产生警告. 给全局变量赋值会改变全局状态,所以不建议使用全局变量. 下面的实例显示了全局变量的用法. #!/usr/bin/ruby $global_variable = 10 class Class1 def print_global puts "Global variable in Class1 is #$global_variable" end end class Class2 d
-
JS中类的静态方法,静态变量,实例方法,实例变量区别与用法实例分析
本文实例讲述了JS中类的静态方法,静态变量,实例方法,实例变量区别与用法.分享给大家供大家参考,具体如下: 1.类的静态方法 先来段代码之后分析 // JS类静态函数 function BaseClass() { } // 类添加add函数 BaseClass.add = function() { console.log("BaseClass add()方法被调用"); }; // 类方法(类的静态函数)直接调用 // 类名.类方法名 BaseClass.add(); //BaseCl
随机推荐
- 正则表达式对qq号码校验
- iOS实现裁剪框和图片剪裁功能
- asp.net下定制日期输出格式的代码
- asp.net 保存、修改没有 runat=server控件的控件值的一个解决方案
- php中获取主机名、协议及IP地址的方法
- php中的常用魔术方法总结
- PHP获取文件扩展名的方法实例总结
- 简单介绍Python中的JSON使用
- Python远程桌面协议RDPY安装使用介绍
- 多字段模糊搜索的函数
- java教程之java程序编译运行图解(java程序运行)
- 用Ajax来控制书签和回退按钮的代码
- 设置Linux系统的空闲等待时间TMOUT的方法
- SQLServer 参数化查询经验分享
- 使用mysql_udf与curl库完成http_post通信模块示例
- BootStrap树状图显示功能
- javascript定义函数的方法
- JavaScript Timer实现代码
- 用Javascript实现Sleep暂停功能代码
- Java2 JDK安装和配置教程