大家先看下面代码:
class Person < Struct.new(:age)
def say_age
puts "say age: #{age}" if age != nil
end
def hello_age
puts "hello age: #{age}" if age!=nil
end
end
p = Person.new(30)
p.say_age
p.hello_age
p.age = 20
p.say_age
p.hello_age
输出是:
say age: 30
hello age: 30
say age: 20
hello age: 20
如果使用:
def say_age
puts "say age: #{@age}" if @age != nil
end
def hello_age
puts "hello age: #{@age}" if @age!=nil
end
那么什么都不输出,应为@age 为nil
如果使用:
def say_age
puts "say age: #{:age}" if :age != nil
end
def hello_age
puts "hello age: #{:age}" if :age!=nil
end
那么输出是:
say age: age
hello age: age
say age: age
hello age: age
:age 符号而已
ActiveRecord的低层有使用这种方式申明class
class ColumnDefinition < Struct.new(:base, :name, :type, :limit, :precision, :scale, :default, :null) #:nodoc:
..
..
..
end
文件:schema_definitions.rb
路径:%RUBY_HOME%\\lib\ruby\gems\1.8\gems\activerecord-2.0.1\lib\active_record\connection_adapters\abstract
分享到:
- 2007-12-21 17:33
- 浏览 1964
- 评论(2)
- 论坛回复 / 浏览 (2 / 2309)
- 查看更多
相关推荐
使用成员变量时,我们需要先创建一个类,并在类中定义成员变量。然后,我们可以创建类的对象,并...通过创建类的对象,我们可以通过对象来访问和修改成员变量的值,并且可以在类的成员函数中对成员变量进行操作和输出。
直接调用类方法量:class::attribute/function,无论是静态/非静态都可以,静态static:声明类成员或方法为 static,就可以不实例化类而直接访问,不能通过一个对象来访问其中的静态成员(静态方法除外),静态成员属于类,不...
类的对象不能直接访问类声明的私有成员变量,否则破坏了信息隐藏的目的。 在C++中,为了防止某些数据成员或成员函数从外部被直接访问,可以将它们声明为private,这样编译器会阻止任何来自外部非友元的直接访问。 ...
2、设计类来描述真实客观世界中的事物,使用类的成员变量来表示事物的属性和状态,使用类的成员方法来提供对成员变量的访问或修改。 程序功能:设计一个用来描述汽车的类,使用类的非静态成员变量来表示汽车的车主...
1 、定义一个时间类Time,有三个私有成员变量Hour、Minute、Second,定义构造函数、析构函数以及用于改变、获取、输出时间信息的公有函数,主函数中定义时间对象,并通过调用各种成员函数完成时间的设定、改变、获取...
(1) 类可以嵌入另一个类中,但不能嵌入接口中。 (2) 在静态方法或其他方法中,不能直接创建内部类对象,需通过手段来取得。 手段有两种: class A { class B {} B getB() { B b = new B(); return b; } }...
设计一个学生信息类。 类的声明,指的是描述一个类所拥有的结构。类的声明主要包含两个部分:成员变量和成员函数。
这样的成员 成员变量声明前必须加上关键字 static 成员声明为 static 后 在创建该类的 任何对象之前就可以访问它 例如 类中的 main 方法声明为 static 所以不用创建该类 的实例就可以由 Java 运行时的系统调用 main ...
static表示“全局”或者“静态”的意思,用来修饰成员... 用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它类的对象市,不生成static变量的副本,而是类的所有实例共享同一个static变量。
一.静态成员变量: 类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态...//声明,标准c++支持有序类型在类体中初始化,但vc6不支持。 }; xxx.cpp文件 co
private 关键字是访问控制修饰符,可以应用于类、方法或字段(在类中声明的变量)。 只能在声明private(内部)类、方法或字段的类中引用这些类、方法或字段。在类的外部或者对于子类而言,它们是不可见的。 所有类...
java的控制符可分为两大类,一种是访问控制符,另一种是非访问控制符。我们上文提到的public,private便是访问控制符了。 访问控制符:访问控制...以上表格中“√”表示可以访问,“×”表示不能访问,我们可以看出,p
内部类的定义和普通类的定义没什么区别,它可以直接访问和引用它的外部类的所有变量和方法(包括private),就像外部类中的其他非static成员的功能一样。区别是,外部类只能声明为public和default,而内部类可以声明...
在外部类内部使用内部类-不要在外部类的静态成员中使用非静态内部类,因为静态成员不能访问非静态成 员。 • 2.在外部类以外使用非静态内部类。 –private 修饰的内部类只能在外部类内部使用。 –在外部...
密封类:密封类不能作为基类被继承,但可以继承别的类或接口,密封类中不能声明受保护的成员或虚成员,密封类不能声明为抽象的,声明密封类用sealed.密封方法只能用于对基类的虚方法进行实现,声明密封方法时同时...
在CRuntimeClass结构中定义了类名、对象所占存储空间的大小、类的版本号等成员变量及动态创建对象、派生关系判断等成员函数。每一个从CObject类派生的类都有一个CRuntimeClass结构同它关联,以便完成在运行时得到...
对象的使用包括引用对象的成员变量和方法,通过运算符·可以实现对变量的访问和方法的调 用,变量和方法可以通过设定一定的访问权限(见下面的例子)来允许或禁止其它对象对它的 访问。 我们先定义一个类 Point。 例子...
私有 private 成员只能被该类中的其他成员访问,而程序中的其它代码是不能直接 访问这些变量的。 公用 public 成员既可以被该类的其他成员访问,也可以被程序中的其它代码访问。 类中的公用成员对外部代码是开放的,...
类主体的结构: <类首声明> { //类首,以下为类主体 <成员变量的声明> <成员方法的声明及实现> } 成员变量即类的数据,反映了类的属性和状态。 成员方法即类的行为(对数据的操作) 例4.2.1:声明一个日期类Date1 ...
背景介绍 操作系统 : CentOS7.3.1611_x64 ...C语言结构体定义中的变量默认是公有(Public)属性,如果实现成员变量的私有(Private)化? 解决方案 将结构体的定义放入源码件中实现,头文件只放声明。 比如有