学习ruby干货

上传人:mg****85 文档编号:44175413 上传时间:2018-06-08 格式:PDF 页数:22 大小:624.35KB
返回 下载 相关 举报
学习ruby干货_第1页
第1页 / 共22页
学习ruby干货_第2页
第2页 / 共22页
学习ruby干货_第3页
第3页 / 共22页
学习ruby干货_第4页
第4页 / 共22页
学习ruby干货_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《学习ruby干货》由会员分享,可在线阅读,更多相关《学习ruby干货(22页珍藏版)》请在金锄头文库上搜索。

1、我在 【解惑】计算机学习速成法【解惑】计算机学习速成法 、 、 听杨中科吹牛听杨中科吹牛 B杨中科:我的大学生活杨中科:我的大学生活 、 、 程序程序化的思维与一通百通,一切语言都是纸老虎化的思维与一通百通,一切语言都是纸老虎 、 、 这么多技术我该怎么学这么多技术我该怎么学 、 【解惑】杨中科 、 【解惑】杨中科 说给弟弟的话说给弟弟的话等文章中多次提到把一门语言玩儿深入以后再学一门新语言有多容易。 但是 很多同学可能没有直观的感受,下面就是我工作中由于用到 C#、groovy、ruby 等语言,临 时学习、现学现卖的一些笔记,学这些语言,我用了多则一周,少则一两天就可以达到使用这些新语言“

2、干活解决问题”的程度。 我的我的 ruby 学习笔记(因为之前用过和学习笔记(因为之前用过和 ruby 类似的类似的 python,所以是对照,所以是对照 python 进行对进行对照式学习的)照式学习的) 1、map 的声明方法: m=“1“=“3“,“2“=“aa“ 2、if count10 . elsif c90 应用强大的 block: m= (1.100).each|a| ma=a*a m.each|a|puts a 12、block 与变长参数: class FileProcess def FileProcess.process(*args) f = File.open(*args

3、) yield f f.close() end end FileProcess.process(“c:/boot.ini“,“r“) |file| while line=file.gets puts line end 另一种用法: FileProcess.process(“c:/boot.ini“,“r“) do |file| while line=file.gets puts line end end 13、闭包: class MyClass def initialize(% mod;+ next;- previous;* power;| or; xor; negate;a a.getAt(

4、b);a = c a.putAt(b,c);ab a.rightShift(b);ab a rightShiftUnsigned(b); switch(a)case b: b.isCase(a);a=b a.equals(b); ab pareTo(b); ab pareTo(b)0; a=b pareTo(b)=0; a s+=number+ assert s=0 0.1 0.2 0.3 0.4 17 List 的常见操作的常见操作 assert 1,2,3.flattern()=1,2,3/扁平化扁平化 assert 1,2,3.intersect(4,3,1)=3,1/交集交集 asse

5、rt 1,2,3.disjoint(4.5,6) list = 1,2,3 assert list.pop()=3/像使用堆栈一样像使用堆栈一样 assert 3,1,2.sort()=1,2,3 assert 1=1,1,1.unique()/去掉重复元素去掉重复元素 def list=1,2,3 assert list.count(2)=1 assert list.max()=3 assert list.min()=1 def even = list.finditem- item%2=0 assert even =2 assert list.everyitem- item item sto

6、re+=item /反向遍历反向遍历 assert 1,2,3.join(-)=1-2-3 for(i in 1,2,3) println i 18 文件处理:文件处理: new File(a.txt).eachLineprintln it 19 groovy中中 xml处理非常简单, 可以参考处理非常简单, 可以参考 blogjava上的一篇名为上的一篇名为“Groovy高效编程高效编程 生成生成 XML 文件文件”的文章。的文章。 20 Groovy 中使用中使用 Swing 构建界面:构建界面: import grooby.swing.SwingBuilder swing = new S

7、wingBuilder() frame = swing.frame(titile:Demo) menuBar menu(File) menuItem New menuItem Open panle label Label my slider() comboBox(items:1,2,3) frame.pack() frame.show() 21 groovy 中简化了中简化了 jdbc访问数据库的方法,提供了访问数据库的方法,提供了 execute、eachRow 等方法,无等方法,无需开发人员关心关闭连接等问题。需开发人员关心关闭连接等问题。 22 java 中运行中运行 grooby 脚本

8、的方法:脚本的方法: GroovyShell shell = new GroovyShell() Object result = shell.evaluate(“12+23“) 23 Groovy 解析引擎的类为解析引擎的类为 GroovyScriptEngine def engine = new GroovyScriptEngine(“.“) def value = engine.run(“test/MyScript.grooby“,new Binding() 我的我的 C#学习笔记(由于对学习笔记(由于对 Java比较熟,而比较熟,而 C#和和 Java类似,因此是对照类似,因此是对照 J

9、ava 进行对照进行对照式学习的) :式学习的) : 1 枚举定义:枚举定义: enum BillStatus:int AddNew = 1, Audit = 2, Delete = 3 把把 AddNew 转化成对应转化成对应 int 的方法:直接强制转型的方法:直接强制转型,int a= (int)BillStatus.AddNew。 也可以把也可以把 string 转换为枚举值,但其语法略复杂一些。有一个特定的命令用于这种类型转换为枚举值,但其语法略复杂一些。有一个特定的命令用于这种类型 的转换,即的转换,即 EnumParse(),使用方式:,使用方式: (enumarationTyp

10、e)Enum.Parse(typeof(enumerdionType), enumerdionString); 使用了另一个运算符使用了另一个运算符 typeof 可以得到操作数的类型。可以得到操作数的类型。 例如:例如:int a = (int)Enum.Parse(typeof(BillStatus),“AddNew“); MessageBox.Show(this,a.ToString(); Enum 工具类中有工具类中有 GetValues 等操纵枚举的方法。例如:等操纵枚举的方法。例如: String names = Enum.GetNames(typeof(BillStatus);

11、foreach(String s in names) MessageBox.Show(this,s); 实例:实例: Object obj = some.a; if(obj is Enum) int value = (int)obj; Console.WriteLine(value); Object en = Enum.Parse(obj.GetType(),value.ToString(); Console.WriteLine(en.GetType()+“:“+en.ToString(); 2 C#中基本类型也是类。比如:中基本类型也是类。比如: int a = (int)Enum.Pars

12、e(typeof(BillStatus),“AddNew“); MessageBox.Show(this,a.ToString(); 3 委托委托 委托是一种可以把引用存储为函数的类型。委托是一种可以把引用存储为函数的类型。 委托的声明常类似于函数,但不带函数体,委托的声明常类似于函数,但不带函数体,且要使用且要使用 delegate 关键字。委托的声明指定了一个函数签名,其中包含一个返回类型和参关键字。委托的声明指定了一个函数签名,其中包含一个返回类型和参 数列表。在定义了委托后,就可以声明该委托类型的变量。接着切始化这个变量为与委托数列表。在定义了委托后,就可以声明该委托类型的变量。接着切

13、始化这个变量为与委托有相同签名的函数引川。之后,就可以便用委托变量调用这个函数。有相同签名的函数引川。之后,就可以便用委托变量调用这个函数。 delegate double processDelegate(double param1,double param2) static double Multiply(double param1,double param2) return param1*param2; processDelegate aPro = new processDelegate(Multiply); aPro(2,2); C# 中 委 托 的 机 制 和中 委 托 的 机 制 和

14、Delphi中 的 事 件 机 制 类 似 。 例 如中 的 事 件 机 制 类 似 。 例 如myTimer+=new EclapsedEventHandler(doTimer);这样就为这样就为 Timer 的的 onTimer 指定了处理函数。 不同点在于指定了处理函数。 不同点在于可以通过可以通过 myTimer+=的方式为事件指定多个处理函数,这一点又和的方式为事件指定多个处理函数,这一点又和 java 中事件列表类似。中事件列表类似。 自定义事件的实现:自定义事件的实现: 定义一个名称为定义一个名称为 MessageHanler 的委托,然后的委托,然后 public event

15、MessageHanler msgArrived; 想要想要 4、 Debug.writeLine() Trace.writeLine() Debug.Assert() Trace. Assert () 5、 在默认情况下,类声明为内部的,即只有当前工程中的代码才能访问它。可以用在默认情况下,类声明为内部的,即只有当前工程中的代码才能访问它。可以用 intemal 访问修饰符关键字显式指定,但这是不必要的。访问修饰符关键字显式指定,但这是不必要的。 在类定义中指定继承。为此,要在类名的后面加上一个冒号,其后是基类名在类定义中指定继承。为此,要在类名的后面加上一个冒号,其后是基类名 域也可以他用关键字域也可以他用关键字 readonly, 表示这个域只能在执行构造函数的过程中赋值 例如:, 表示这个域只能在执行构造函数的过程中赋值 例如: public readonly int MyInt17; 也可以在方法定义中使用下述关键字:也可以在方法定义中使用下述关键字:virtual,override,abstract,extern。 如果使用了如果使用了 override,可以使用,可

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号