Ruby
Hustudent20080101
MFC Qt 瑞萨 ARM Linux
展开
-
class Student < Person
# encoding: utf-8#E4.4-1.rb ,接着上一节的代码,添加如下:class Persondef initialize( name, age=18 )@name = name@age = age@motherland = "China"end #初始化方法结束def talkputs "my name is "+@name+", age is "+@age.t转载 2012-11-04 18:19:45 · 719 阅读 · 0 评论 -
技术人员的起码要求就是不能固步自封,要始终以开放的心态接受新技术
谈谈我为什么要学习ruby on rail 挺有意思的现象 记得过去还没有创办JavaEye的时候,在技术社区里面推广Hibernate(也算不上是推广,只是和别人交流Hibernate),就有一大批人酸酸的跳出来说,你们今天学习这个明天学习那个框架,全都是跟风,这些框架都是浮云,真正JDBC这种基础知识才是实力的,我就用JDBC,我用的一直很好,我完全没有必要去学习Hiber转载 2012-11-08 15:58:26 · 1371 阅读 · 0 评论 -
函数指针FunPtr
# encoding: utf-8def traverse(visit_proc, proc) i = 0 while (i < 10) visit_proc.call(i, i + 1) proc.call i += 1 end end def visit_node(i, j) print("#{i}, #{j}") puts end def p转载 2012-11-08 17:11:05 · 564 阅读 · 0 评论 -
findstr "{" *.rb
Microsoft Windows XP [版本 5.1.2600](C) 版权所有 1985-2001 Microsoft Corp.D:\My Documents\Downloads\Ruby\exer>findstr "{" *.rbE3.10-7_2.rb:3.times { print "Hi!" } #Hi!Hi!Hi!E3.10-7_2.rb:1.upto(9转载 2012-11-08 18:21:11 · 563 阅读 · 0 评论 -
Ruby灵巧,快速,但其实并不简单。
Ruby灵巧,快速,但其实并不简单。Ruby中实现一个小功能,可以有3种甚至4种完全不同的思路与方法,因为Ruby在语法层次实现了冗余1,但是这样一来:1).程序员深入掌握Ruby变得不很容易;2).程序员们相互读懂代码也很难;3).软件生产是一种大规模地、群体合作的行为。许多软件公司有自己的编码规范,促使员工编码风格统一,以便于A)程序解耦重构、B)代码复用、C)人员流动后项目如转载 2012-11-08 21:34:48 · 488 阅读 · 0 评论 -
4.5 多态
# encoding: utf-8#E4.4-1.rb ,接着上一节的代码,添加如下:class Persondef initialize( name, age=18 )@name = name@age = age@motherland = "China"end #初始化方法结束def talkputs "my name is "+@name+", age is "+@age.t转载 2012-11-08 16:59:50 · 570 阅读 · 0 评论 -
Ruby类函数定义的几种方式
Ruby类函数定义的几种方式博客分类: Ruby Ruby类函数定义的几种方式 参考:ruby-defining-class-methods 1、 Ruby代码 class Person def Person.find(id) ... end end 这种方式,有转载 2012-11-08 17:03:51 · 1629 阅读 · 0 评论 -
Ruby函数指针概念详解
Ruby函数指针概念详解Ruby语言中也存在被编程人员公认为最难理解的指针。不过在这项新语言中指针又有什么新的特性呢。下面我们就来看看Ruby函数指针的一些相关概念介绍。Ruby奇特变量特殊性质讲解Ruby标识名使用规范介绍Ruby常用库基础语法详解使用pp()实现Ruby输出二维数组扫盲贴 Ruby on Rails目录文件数转载 2012-11-08 17:07:11 · 1218 阅读 · 0 评论 -
有一些命令式语言,融合了函数式语言的语法, Ruby 就是这样的语言
也有一些命令式语言,融合了函数式语言的语法, Ruby 就是这样的语言,变量和方法区分得不很明显。其次,说一说变量有哪些特征呢?1). 变量有名字;2).变量代表的那个事物应该有一个可以用数学度量的值;长度,面积,速度大小,磁场强度…3).为了区别事物,我们将事物分成几个基本类型。所以,代表不同类型的事物,变量也就有了不同的类型。4). 事物总是有产生到消亡的一个过程,因此,代转载 2012-11-09 14:44:20 · 502 阅读 · 0 评论 -
我的PHP,Python和Ruby之路
个人观点 来自范凯的个人博客我的PHP,Python和Ruby之路 因为看到一篇讨论PHP,Python和Ruby的编程语言讨论贴,就说说我的PHP,Python和Ruby之路吧: 我2000-2001年用PHP用了两年,那还是第一次互联网泡沫时期,到2001年后期,Servlet/JSP流行,然后我就发现:你说用PHP写的东西,都会被人鄙视。当时我们其实也用Ja转载 2012-11-08 15:55:01 · 728 阅读 · 0 评论 -
Ruby 语言的冗余性、缺陷性和动态性正是现实世界的真实写照
Ruby语言具有动态特征,代码行为随时可以改变,本书后面内容都将围绕这一特征展开介绍。产生高级编程语言以来的50年间,从没有哪一种语言像Ruby这样近似于现实世界。看看网络,数不清的信息扑面而来,你知道了什么是冗余;看看每一天的生活,环境污染,交通拥挤,日复一日,许多的无奈,你理解了什么是缺陷;生命里充满了不可预知,明天将发生什么,谁也不知道,也许是悲伤的事,也许是令人欣喜的事,这就是动态。R转载 2012-11-08 21:36:31 · 725 阅读 · 0 评论 -
让Ruby一个函数返回多个值
让Ruby一个函数返回多个值三 14th, 2012发表评论 | Trackbackruby的x, y = "a", "b"语法真的很帅,有时一个函数需要返回多个值,两个结合可以写出很帅的代码。如需要定义一个方法同时返回最大值max和最小值min:class MyClass def some_method ["max",转载 2012-11-08 17:03:03 · 2997 阅读 · 0 评论 -
ruby 中super和super()的区别
ruby 中super和super()的区别分类: ruby2011-10-29 09:58 260人阅读 评论(0) 收藏 举报我们经常要在子类的initialize方法中调用super和super()。从语法上说super和super()是有微妙区别的。super不带括号表示调用父类的同名函数,并将本函数的所有参数传入父类的同名函数;转载 2012-11-04 18:26:28 · 4226 阅读 · 0 评论 -
ruby中::究竟代表什么?
ruby中::究竟代表什么?分类: ruby2011-10-29 10:10 251人阅读 评论(0) 收藏 举报昨天在stack overflow上问了2个关于Rspec源码的问题,结果由于表意不清加之问题含糊被老外鄙视了一遍。但是没有想到的是,竟然还是高人非常清楚的问答了出来。其中一个问题是这样的:[ruby] view plaincopy转载 2012-11-04 18:27:49 · 731 阅读 · 0 评论 -
第四章 一切都是对象 4.1 两种思维方式
第四章 一切都是对象4.1 两种思维方式人们起初使用计算机来进行科学计算,比如说:计算级数和,计算积分值。那时,程序要处理的都是带小数点的数字。后来,人们要处理文本,有点麻烦,好在文字也可以转换成数字。这两个时期,编写程序的思想是:一个步骤,一个步骤地告诉计算机如何做,做完一大段步骤,就算完成了一个功能模块。再后来,人们希望计算机能应用在管理中。比如说:机场管理。一个大都市的民航机场,转载 2012-11-04 16:01:21 · 457 阅读 · 0 评论 -
封装、继承、多态是面向对象编程的三个本质特征。
每个事物都有一些特点,人有身高,体重,在程序中我们称之为属性;还可以有一些行为,人要吃饭,睡觉,在程序中我们称之为方法。学生是人,自然有身高,体重,自然要吃饭,睡觉。如果你把人看作一类事物,把学生看作一类事物;那么,人是父类型,学生是子类型。子类型从父类型自然得到属性、方法,我们称之为继承。学生要考试,工人不要;工人拿工资,学生不拿(一般而言)。同一个父类,不同的子类有不同的行为和状态,我转载 2012-11-04 17:34:29 · 554 阅读 · 0 评论 -
attr_accessor :motherland 相当于attr_reader:motherland; attr_writer :motherland
# encoding: utf-8#E4.3-1.rb 。class Persondef initialize( name, age=18 )@name = name@age = age@motherland = "China"end #初始化方法结束def talkputs "my name is "+@name+", age is "+@age.to_s if @mo转载 2012-11-04 17:56:32 · 570 阅读 · 0 评论 -
增强父类的方法(用关键字super指明)
用“ 现在说一说new方法。Person类没有定义new方法,为什么生成Person类的具体实例要用new? Ruby语言已经定义了一个类Object,如果你在定义新类的时候,没有指明新类的父类,那么,Ruby解释器认为,新类的父类是Object类。类Object含有new方法、initialize方法…只要你不重写这些方法,你就自然在使用类Object的方法。从这里,我们发现一个有趣的事转载 2012-11-04 18:22:19 · 655 阅读 · 0 评论 -
Ruby和Rails的缺点
Ruby为什么会受程序员的欢迎? 孟岩最近写了一篇博客: Ruby 1.9不会杀死Python 这篇文章很有点标题党的意思,所以在JavaEye论坛很快被水掉了,只好锁贴: 但我个人对于孟岩的观点是不敢苟同的。首先我并不同意所谓魔幻语言和简约语言的分类。其实Martin Flower论述过这个问题,他是用“人性化接口”和“最小接口”来区分编程语言的风转载 2012-11-08 15:49:09 · 1078 阅读 · 2 评论 -
规模最大又如何?还是不赚钱。互联网的未来生态系统肯定是由平台和内容提供商构成
做互联网产品的节奏感 从无到有刚开始做一个网站或者一个产品,要非常聚焦,没有旁的多余功能,只有一个做的极其牛X的核心功能,牛X到别人没有办法模仿你,于是网站开始崭露头角; 等核心功能成功以后,网站开始声名鹊起,为了扩展用户规模,产品开始多元化,各种各样时髦功能,各种各样用户要求的功能纷纷上马,于是用户规模开始快速扩张; 等用户规模已经起来之后,开始聚焦商业目标,于转载 2012-11-08 16:00:31 · 750 阅读 · 0 评论 -
5.4 蓝图可以改变吗? ——动态语言
5.4 蓝图可以改变吗? ——动态语言Ruby 是动态语言,你可以改变 Ruby 程序的结构,功能,在Ruby程序运行中。方法、属性可以被加入或去除,新的类或对象可以被建立,新的模块可以出现。请看程序 E5.4-1.rb :# E5.4-1.rbclass Persondef talkputs "Today is Saturday. "endendp1=Person转载 2012-11-09 14:44:40 · 464 阅读 · 0 评论 -
5.5 一些编码建议
5.5一些编码建议这里不是 Ruby语言的编码约定,只是建议,很少的一些建议。在语法正确的前提下,你可以按照自己的编码风格自由组织你的代码。一. 命名常量全用大写的字母,用下划线分割单词。例如:MAX, ARRAY_LENGTH。类名和模块名用大写字母开头的单词组合而成。例如:MyClass, Person。方法名全用小写的字母,用下划线分割单词。例如:talk, is_p转载 2012-11-09 14:44:47 · 555 阅读 · 2 评论 -
6.1 重载?重写
第六章 深入面象对象6.1 重载?重写在Java 中,重载(overload)和重写(override)是用来表现多态性的两种重要方式。override 也有译作“覆盖”、“覆写”。Java 中称作“覆写”比较恰当。重载方法是指一个类中,方法名相同、参数列表不同的几个方法,调用时根据不同的参数调用不同的方法。方法重载与返回类型无关。覆写方法是指子类有一个方法,方法名、参数列表、返回转载 2012-11-09 14:52:41 · 580 阅读 · 0 评论 -
Ruby开发者应该熟悉的10个工具
Ruby开发者应该熟悉的10个工具2011-10-11 10:07 xdite http://blog.xdite.net 我要评论(0) 字号:T | T原本是承诺读者要整理一篇我常用的工具集,后來想想其实应该要改成來写一篇:「十个Ruby Web Developer应该熟悉的工具」。AD:1. GitGit 是进入转载 2012-11-09 18:42:18 · 742 阅读 · 0 评论 -
@@count=0 @name ="Jim"
# encoding: utf-8#E6.3-1.rbclass StudentClass@@count=0@name ="Jim"def initialize( name )#@name = name@@count+=1enddef talkputs "I am #@name, This class have #@@count students."#puts "I am #转载 2012-11-09 19:31:25 · 709 阅读 · 1 评论 -
本来:权限修饰符只对实例方法生效(下面解释),但是这里类方法也受限制
本来:权限修饰符只对实例方法生效(下面解释),但是这里类方法也受限制了。解释:ruby中类也是一个实例,给类这个实例加入实例方法,也会有private/protected之分。Ruby代码 class def method3 p 'method3' end private def method4转载 2012-11-09 20:14:15 · 634 阅读 · 0 评论 -
Ruby中用begin/end …rescue…ensure … raise 来处理异常
6,异常与线程 与C#、Java中的try…catch…finally…throw 相对应, Ruby中用begin/end …rescue…ensure … raise 来处理异常,retry可以用在rescue中。可以只用rescue或是ensure,两者都使用时,rescue必须在ensure前。Ruby语法学习记录-从零开始之前转载 2012-11-29 16:14:06 · 4876 阅读 · 0 评论 -
ruby 的module 与类
ruby 的module 与类博客分类: java ruby模块与类 Class类是Module的子类,类是一种特殊形式的模块, Class, Module, Object,Kernel的关系。 我们知道最顶级的类是Object,那么最顶级的模块就是Kernel 我们使用模块的的主要目的是用来组织代码,模块化代码,有点类似命名空间,但却有转载 2012-11-15 13:43:00 · 659 阅读 · 1 评论 -
一、Sketchup用ruby进行二次开发--简述
一、Sketchup用ruby进行二次开发--简述 标签: rubySketchup二次开发2014-07-17 15:56 2370人阅读 评论(2)收藏举报本文章已收录于:分类: Sketchup+ruby开发(6) 作者同类文章X版权声明:本文为博主原创文章,未经博主允许不得转载。转载 2017-04-19 13:42:37 · 2376 阅读 · 2 评论 -
Sketchup二次开发之利用Ruby绘制直线
Sketchup二次开发之利用Ruby绘制直线2013-03-16 19:41 by 精诚所至 金石为开, 1443 阅读, 0 评论,收藏,编辑sketchup二次开发语言Ruby类由上至下分为APP,Model,Entities三大类,其中APP指的是Sketchup应用程序本身,Mode类指的是Sketchup模型文件,Entities类指各种实体,比如直线,圆弧转载 2017-04-19 13:56:14 · 1515 阅读 · 1 评论 -
ruby中类的写法以及属性,实例变量,类方法的用法
ruby中类的写法以及属性,实例变量,类方法的用法标签: rubyclassgetterjavasetterfile2011-11-16 12:28 3103人阅读 评论(0)收藏举报本文章已收录于:分类: ruby(8) 作者同类文章X版权声明:本文为博主原创文章,未经博主允许不得转载 2017-04-20 18:49:47 · 1540 阅读 · 0 评论 -
如果我们只是想增强父类的方法,而不是完全地替代它,就可以用关键字super指明。
6.2 增强父类方法如果我们只是想增强父类的方法,而不是完全地替代它,就可以用关键字super指明。看程序 E6.2-1.rb :# encoding: utf-8#E6.2-1.rbclass Persondef initialize(name)@name=nameenddef talkprintf( "my name is %s.",name)#print "my nam转载 2012-11-09 15:09:21 · 591 阅读 · 0 评论 -
三. 使用 return
三. 使用 return你在定义方法的时候,在最后一行可以显式地 return 某个值或几个值,但却不是必须的。 Ruby 方法的最后一行语句如果是表达式,表达式的值会被自动返回;最后一行语句如果不是表达式,就什么也不返回。return 并不仅仅用在方法的最后一行。使用 break 你能够跳出本层循环,如果要从多重循环体中跳出,可以使用return ,结束这个方法; return还能够从方转载 2012-11-09 14:45:09 · 578 阅读 · 0 评论 -
一个变量被赋予了某个数据类型的值,可以随时再赋予这个变量其它数据类型的值
class Worker < Persondef talkputs "I am a worker. my name is "+@name+", age is "+@age.to_send # talk方法结束end # Worker类结束p5=Worker.new("kaichuan",30);p5.talkp6=Worker.new("Ben");p6.talkp5=5p6=6转载 2012-11-09 14:44:32 · 1016 阅读 · 0 评论 -
动态语言,可以随时改变类的属性、方法,所以覆写和重载的重要性就降低了
方法的重写,我们在4.4节和4.5节已经看到了。Worker类与Student类继承自Person类,并且各自重写了Person类的talk方法。这是在子类和父类之间,如果在同一个类中写两个同名方法呢?看程序 E6.1-3.rb :# E6.1-3.rbdef talk (a)puts "This is talk version 1."enddef talk (a,b=1)转载 2012-11-09 14:59:15 · 605 阅读 · 0 评论 -
能被某个类的所有实例对象共享,这样的变量称之为类变量
面向对象的编程,以类为单元模块。类是设计蓝图,具体的事物是实例对象。前面 5.3 节说到:“变量名,变量值,变量类型,变量的作用域,是我们学习命令式语言不可回避的几个要素”。对于面向过程的命令式语言,这四个要素已经够了;对于面向对象的命令式语言,还要加上变量的第五个要素——共享性。如果一个变量,只能被某个实例对象使用,这样的变量称之为实例变量;如果一个变量,能被某个类的所有实例对象共享,这样的转载 2012-11-09 15:15:54 · 3954 阅读 · 0 评论 -
def StudentClass.student_count
# encoding: utf-8#E6.3-2.rbclass StudentClass@@count=0def initialize@@count+=1enddef StudentClass.student_countputs "This class have #@@count students."endendp1=StudentClass.newp2=Student转载 2012-11-09 19:36:09 · 608 阅读 · 0 评论 -
p self # => main p self.class # => Object
# encoding: utf-8# 这个位置位于top level context,代表Object的默认对象main p self # => main p self.class # => Object @self1 = self # 因为所有自定义类都位于main context之中,所以这是Object的实例方法 # 同时也可以说是一个全局方法 de转载 2012-11-09 19:55:51 · 577 阅读 · 0 评论 -
ruby中的实例变量要有@号,所以此处不用self,而用@name,也是可以的
self显式/隐式 你可以先试着运行下面代码,看看有什么意外发生没有Ruby代码 class Person attr_accessor :name def set_name(your_name) name = your_name end end m = Person.new转载 2012-11-09 20:00:13 · 1152 阅读 · 0 评论 -
def get_my_secret2 self.my_secret # => 显式
显式self不可以调用private(protected的也一样)方法,而隐式的可以(这个原因我在下面解释) 。原因是什么?Ruby代码 self.my_secret # => 显式 #这一句的self在实例方法内,所以self指的是Person的一个实例,而实例是不能调用私有方法的(protected也如此) #注意,此时的self和我们new一个Pe转载 2012-11-09 20:08:59 · 681 阅读 · 1 评论