男人眼泪中的Ruby(二)

等待今天宿舍的小八提出来要考 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)
看到了下面的这个内容

#<Man:0x28bdb64 @age=21, @name="jesse">
nil

inspect就是ruby对象的自省函数啦。这里的superman是一个Man类型的实例,后面的数字是ruby虚拟机用的对象标识符。@age和@name都是这个对象实例的值。这里你可以想到什么,自己考虑吧。明天在写了,继续努力...

 
 
 
posted @ 2007-03-13 23:11 JesseZhao 阅读(1840) 评论(12)  编辑 收藏 所属分类: M Ruby

  回复  引用    
#1楼 2007-03-13 23:32 | liuzhuang [未注册用户]
Being DBA is more money and less challenge! Only drawback is boring

I feel sorry for myself choosing to be developer
  回复  引用  查看    
#2楼 2007-03-14 00:28 | Phinecos(洞庭散人)      
DBA不错啊
  回复  引用  查看    
#3楼 2007-03-14 09:31 | 亚历山大同志      
啊,这么多天了还在感伤阿?
PS:个人还是喜欢Python多一点。因为 ruby is nothing without Rais
  回复  引用  查看    
#4楼 2007-03-14 10:39 | Cure      
@亚历山大同志
还是喜欢python,ruby里最不喜欢的就是什么都要带个end。

忍不住批评楼主几句,大男人别动不动就眼泪眼泪的,随笔的标题太矫情了
  回复  引用  查看    
#5楼 [楼主]2007-03-14 11:48 | JesseZhao      
@Cure
哥们,不是我矫情啊
只是那个题目是刚失恋的时候以为这段感情还可以回到从前时候写到
现在不想换了,只是想继续这个标题系列而已
  回复  引用  查看    
#6楼 [楼主]2007-03-14 11:50 | JesseZhao      
我以前看过一点python,感觉python也不错
ruby的话我只是听说ruby on rails比较有名,不知道具体是什么样子
所以翻翻ruby,买本ruby on rails up and running 看看
  回复  引用  查看    
#7楼 2007-03-14 12:17 | deerchao      
@Cure
@JesseZhao
无情未必真君子,怜子如何不丈夫

我也觉得很多end会让人觉得回到了Basic年代。。
  回复  引用  查看    
#8楼 2007-03-14 12:35 | Cat Chen      
其实不用学Ruby也能用Rails,按照Rails的方式去用就好了,哈哈。
  回复  引用    
#9楼 2007-03-14 14:22 | stephen [未注册用户]
To be a DBA or to be a Programmer? it's a question.
  回复  引用  查看    
#10楼 [楼主]2007-03-14 17:20 | JesseZhao      
@Cat Chen
有时间了和你交流一下ruby on rails
  回复  引用    
#11楼 2007-06-28 08:55 | skyover [未注册用户]
ruby的语法不是参数小写的嘛。呵呵。
  回复  引用    
#12楼 2007-06-28 22:28 | bsmagic [未注册用户]
兄弟啊!

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  博客园首页

  新闻频道

  社区

  小组

  博问

  网摘

  闪存

  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
成果网帮您增加网站收入


相关链接: