在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
等待今天宿舍的小八提出来要考 DBA ,这个勾起了我的思绪。To be a DBA or to be a Programmer it's a questions。其实我个人比较倾向去做程序设计,可是综合考虑到我的性格,感觉自己做DBA更合适一点。下午看了一下 Oracle Certified Administrator (OCA)的书,感觉没有想象中的难,大多是数据库的维护。可能唯一让人感觉到难得是要求回到可爱的linux下面(不是必须的),不过还好我有些linux基础。大家有没有做数据库的给我联系一下,有些问题想请教。 这几天忙着锻炼身体和找些小说调整心理,所以没有在第一时间写ruby系列,希望大家原谅。还好现在我的心态好些了。想起了小时候玩的《仙剑奇侠传》里面的诗,现在感觉其实还挺好的。
言归正传,下面来看看在 Ruby 里面如何来定义一个类呢: class MyClass end ob=MyClass.new 上面就是建立一个类并且初始化一个MyClass的类的实例ob,语法相当简单的,其实个人还是比较喜欢在new后面加上(),主要是害怕多了眼晕。实际上即使咱们创建的MyClass是一个空类,但是也不见他是真的 Poor empty。他还有从Object对象继承下来的属性和方法啊。这里也就引入了ruby的类层次模型,所有的类都是从Object继承下来的,这点还是和大部分面向对象语言一样的。谢谢他一个比较好玩的方法,就是Class.class方法,告诉别人自己是什么类。看看下面的代码: puts ob.class #=>displays "MyClass" 用class方法可以输出ob的类名,感觉这个在特定的场合还是有一定用处的。下面让我们类有些用处,不要只会跟他爹说自己的名字,也要会说些其他的东西。 class MyClass def saysomething puts("Hello") end end ob=MyClass.new ob.saysomething 这样就完成一个有用的类的实例化和调用了。感觉对ruby的类调用明晰点了吧。下面让类更活泼一点,除了会说,还要会学,能够自己接受写什么东西,当然还都是函数喽。 class Bird def set_name(aName) @myname=aName end def get_name return @myname end def talk return 'GiGi' end end bluebird=Bird.new redbird=Bird.new bluebird.set_name('bluebird') redbird.set_name('redbird') puts(bluebird.get_name) puts(redbird.get_name) puts(bluebird.talk) puts(redbird.talk) 这个就是对类的一个基本的初级综合应用了,模拟了一个Bird的动作。不过感觉每次都这样在初始化一个类之后在用class.set_name()函数是不是很麻烦,可不可以直接用class()来做啊。这里就引出了下面的主角 Constructors 了。对于对象的初始化函数,在C#之类的都是和类名同名的函数,不过在ruby里面就不一样了,有一个专门的函数名字来对应 initialize()。下面看看代码更好理解:
class Man def initialize(aName,aAge) @name=aName @age=aAge end def get_name return @name end def get_age return @age end def to_s return 'Good!!!' end end superman=Man.new('jesse',21) puts(superman.get_name) puts(superman.get_age) puts(superman.to_s) 这里面的代码展示了initialize()这个构造函数的使用方法,后面还提到了函数的重载。我重载了to_S函数,来实现自己所谓的toString,感觉更好点。其实有时候感觉动态语言真正的牛逼在于它的动态,反映在反射机制上面了,下面通过一角,看看ruby的反射。输入下面代码 superman.inspect
p(superman)
看到了下面的这个内容
inspect就是ruby对象的自省函数啦。这里的superman是一个Man类型的实例,后面的数字是ruby虚拟机用的对象标识符。@age和@name都是这个对象实例的值。这里你可以想到什么,自己考虑吧。明天在写了,继续努力... |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论