男人眼泪中的 Ruby (一)

我想作一个职业技术作家,可是我太感性,写不出严谨的技术文章,总是喜欢在自己的文章中显露太多的感情色彩。这个系列文章从名字中就显露出我最近的感情色彩,不可否认我最近处于痛苦之中,经常暗自流泪。不知道在男人眼泪中的ruby是什么滋味,想知道吗?看看我的这个系列文章吧。

一:Hate ? World

记得大部分的文章在介绍语言的时候总是喜欢用Hello World的小程序,那个程序可以最好的展示语言的结构,很是经典,不过我的心情仿佛不太喜欢这个世界,我可能讨厌无情的世界,虚伪的世界,或者?的世界。看看下面的代码:

print('Enter the World name(ex sad)')
worldname=gets()
puts("Hate the #{worldname} world")

这段代码的意思是根据提示输入你最讨厌的世界的名字,然后输出 Hate the ? world。很简单的一个程序,变通了一下 Hello World。在这个小程序里面可以讲四点:

  1. print('') 这个是把单引号里面的字符输出来。他在输出字符串之后不会换行。
  2. gets() 获取输入的string,赋给其他变量。
  3. puts('')是把引号里面的内容输出来,输出之后会换行,这个是和print的区别。
  4. #{}这个里面的东西会被输出。我说里面东西的意思是想说明里面不一定是个变量,也可以是个表达式或者是个函数。

二:Methods

我们在OOP里面总是在说对象之间是通过消息进行交流的。在对象获得消息之后想要进行处理,必须干什么呢。调用与消息对应的Methods以响应那个消息。这里就引出了我们的Methods了。多说一句在非OOP里面,或者说是面向过程的编程里面咱们的Method就成了Function了。在Ruby里面怎么定义一个Methods呢,其实和Python看上去差不多,给段代码大家就完全明白:

def showmyname
  puts('Jesse Zhao')
end
def showyourname(aName)
  puts("Your name is #{aName}")
end
def showourname(aName,bName)
  puts("My name is #{aName},Your name is #{bName}")
end

这段代码看完之后就能明白了Method的写法了吧,三个例子分别展示了如何写不带参数,带参数和带多个参数的Method的写法。在这里想说一下在puts还有这个def的Method Name后面的那些括号是不必要的,我加上括号是我的习惯,并且个人感觉这样代码看起来不会太混乱。

三:Number and Condition:if then

看了《a little  book of ruby》里面的一个例子很不错,写的很好。给出来看看,感觉对Ruby里面的对象可以加深认识吧。

taxrate=0.175
print("Enter price:")
s=gets()
subtotal=s.to_f
if(subtotal<0.0) then
  subtotal=0.0
end
tax=subtotax*taxrate
puts "Tax on $#{subtotal} is $#{tax},so grand total is $#{subtotal*tax}"

讲解一下:

  1. taxrate这个变量没有定义就直接使用,因为ruby允许在需要时创建变量,ruby可以自己感知变量的类型。
  2. s.to_f。因为ruby是完全OO的东西,所以从string,integer都是类型,都是方法的。这个to_f方法就是string类型的s的方法,他可以把sting转换成float类型。
  3. if then end这个就没有必要解释了吧,大家有些编程经验的应该都看得懂。
  4. string转换成float如果string为数字格式则可以直接转换成float,如果不是数字格式而是其他如"Hate world"转换成float会编程0.0。

四:后续

今天就讲到这里吧,明天开讲Class。宝宝,我依然爱你。请给我再给我一次机会。

posted @ 2007-03-07 23:27 JesseZhao 阅读(2982) 评论(22)  编辑 收藏 网摘 所属分类: M Ruby

  回复  引用    
#1楼 2007-03-07 23:39 | Double [未注册用户]
那个if then end的语句块是不是也可以写成
subtotal=0.0 if subtotal<0.0
  回复  引用    
#2楼 2007-03-07 23:43 | Woodcode [未注册用户]
Roby可以在.NET中使用吗?
  回复  引用  查看    
#3楼 2007-03-07 23:59 | Jeffrey Zhao      
评价一下ruby吧,否则专门讲一下语言感觉意义不大……
  回复  引用  查看    
#4楼 2007-03-08 00:00 | Jeffrey Zhao      
@Woodcode
正在研发之中
  回复  引用  查看    
#5楼 2007-03-08 08:34 | 命运有自己的梦!      
有Ruby.net的,只不过现在是beta.
  回复  引用  查看    
#6楼 2007-03-08 09:06 | 亚历山大同志      
果然是多情地男银,but 妹妹似乎不会到这里来看你的忏悔,妹妹都喜欢QQ ZONE

--by the way 脚本语言用hello world作展示个人觉得很滑稽,因为print("hello world")就完了,根本啥也看不出来
  回复  引用  查看    
#7楼 2007-03-08 10:37 | 灵魂机器      
给点关于Ruby 的最新评价吧,光来个print "helloworld"真的啥也看不出来
  回复  引用  查看    
#8楼 2007-03-08 10:37 | 极地银狐.NET      
这个...楼主,RUBY和你女朋友不会有什么关系吧....
  回复  引用  查看    
#9楼 2007-03-08 11:39 | chy710      
lz最近每个post都提到女朋友,呵呵,男人有时需要理性,呵呵,个人观点!
  回复  引用  查看    
#10楼 2007-03-08 12:55 | 吕震宇      
不错!对于我这个一窍不通ruby的来说简单、明了、易懂。:-)
  回复  引用  查看    
#11楼 [楼主]2007-03-08 13:11 | JesseZhao      
我文章的定位不是高阶的讲解,其实我也是对ruby不太懂,刚刚开开学。ruby这个系列文章是我边学编写的个人笔记
  回复  引用  查看    
#12楼 [楼主]2007-03-08 13:14 | JesseZhao      
@chy710
我会慢慢调整的。
  回复  引用  查看    
#13楼 2007-03-08 14:02 | 巫云      
你老婆不理你吗?
好可怜啊~~~
  回复  引用  查看    
#14楼 2007-03-08 16:42 | reonlyrun      
- -,同情你一下
  回复  引用    
#15楼 2007-03-08 18:53 | wqxh [未注册用户]
跟python语法上确实有些类似

ps:愿lz早日找回真爱
  回复  引用  查看    
#16楼 2007-03-08 19:56 | Cat Chen      
print('Enter the World name(ex sad)')
应该是:
print('Enter the World name (e.g. sad)')
不是Ruby语法问题,仅仅是英语语法问题而已。
  回复  引用  查看    
#17楼 2007-03-08 20:06 | Cat Chen      
其实s.to_f对于.NET用户最直接的解释就是,这相当于ToFloat(),大家都知道ToString()是什么吧,而这在Ruby里面是to_s。这样.NET用户就很容以理解例如to_i就是ToInt()之类的了。况且,to_f不是只能把string转换为float,它可以用在别的东西上。
  回复  引用  查看    
#18楼 [楼主]2007-03-08 20:17 | JesseZhao      
@Cat Chen
呵呵,谢谢拉
  回复  引用  查看    
#19楼 [楼主]2007-03-08 20:18 | JesseZhao      
@wqxh
谢谢你的美好祝愿
  回复  引用  查看    
#20楼 2007-03-09 20:12 | 丁丁      
恭喜楼主,似乎你是第一个写出“男人眼泪中的……”,这么经典的标题的,呵呵
http://www.google.com/search?&ie=UTF-8&q=%E7%94%B7%E4%BA%BA%E7%9C%BC%E6%B3%AA%E4%B8%AD%E7%9A%84

  回复  引用    
#21楼 2007-05-10 13:24 | heweitykc [未注册用户]
楼上的真无聊
  回复  引用  查看    
#22楼 2007-08-05 23:07 | micYng      
我怎么感觉Ruby的语法跟VB有点神似 ...
尤其是if....then... :)

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索


相关链接: